【发布时间】:2015-12-01 18:13:22
【问题描述】:
这个linux命令怎么写? 将所有名称中包含大写字母的文件从源目录移动到目标目录?
【问题讨论】:
这个linux命令怎么写? 将所有名称中包含大写字母的文件从源目录移动到目标目录?
【问题讨论】:
如果我正确阅读了您的问题,请使用:
mv src/*[A-Z]* target/
【讨论】:
* 前后没有空格,第二个* 之前没有空格?
明显但错误的解决方案是
mv src/*[A-Z]* dest
但是,字母顺序取决于区域设置。 [A-Z] 因此可以包含小写字母:
$> touch abc aBc
$> export LC_ALL=C
$> ls *[A-Z]*
abc
$> LC_ALL=en_US
$> ls *[A-Z]*
aBc abc
所以一定要正确设置LC_ALL。
export LC_ALL=C
mv src/*[A-Z]* dest
顺便说一句:*[A-Z]* 由 shell 评估,而不是 mv。因此,以下不起作用:
LC_ALL=C mv rc/*[A-Z]* dest ## does not work
【讨论】:
此版本确保仅将根源文件夹中的“文件”移动到目标目录:
find /source/*[A-Z]* -maxdepth 1 -type f -exec mv {} /target \;
【讨论】: