问题描述
我正在尝试将名称以SML
开头的所有文件从目录移动到另一个目录。
尝试过
find /var/.../Images/ -name SML\* mv /var/.../Images/Small
但不起作用
解决方法
尝试find /var/.../Images/ -name SML\* -exec mv {} /var/.../Images/Small/ \;
我想你想要这样的东西:
dir=/path/to/your/Images
mkdir -p "$dir/Small"
find "$dir" -name "SML*" -not -wholename "$dir/Small/*" -exec mv {} "$dir/Small/" \;
- 由于将文件移动到的目录是您所搜索的目录的子目录,因此需要排除已经移动到那里的文件。所以我加了
-not -wholename "$dir/Small/*"
- 要对找到的每个文件执行命令,您需要
-exec ...
。替代方法是将查找结果通过管道传递到while read
循环。 - 使用
-exec
时,{}
可以引用找到的名称。
有关更多信息,请参见man find
。