Linux 通过名称掩码将文件从一个目录移动到另一个目录

Linux move files from dir to dir by name mask

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