Linux通过名称掩码将文件从dir移动到dir

问题描述

我正在尝试将名称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