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