我正在尝试使用find命令的-exec选项,在我的大型全景照片目录中查找特定文件,并将它们移动到指定位置。我使用的以下命令传递了一个“找不到- exec”的错误参数。有人能指出我解析命令时的错误吗?还是我需要创建某种管道?
$ find -name ~/path_to_directory_of_photos/specific_photo_names* -exec mv {} ~/path_to_new_directory/
您需要使用转义分号(\;
)来终止您的exec命令。
在运行find
命令之前,您应该引用名称模式,否则shell将展开其中的任何通配符。您还需要使用分号(通过反斜杠转义以避免shell将其解释为命令分隔符)来指示mv
命令的结束。
正确的命令应该是:
find ~/path_to_directory_of_photos -name "specific_photo_names*" -exec mv {} ~/path_to_new_directory \;
我知道这篇文章有些旧了,但如果有人需要的话,下面是我的答案。请参考此帖子提供的背景。如果您使用+而不是\;来结束命令,可以更高效地运行它。 \;会导致"mv"一次处理一个文件,而"+"会将"mv"与最大数量的参数一起执行。例如:
mv source1 destination/
mv source2 destination/
mv source3 destination/
vs.
mv source1 source2 source3 destination/
find ~/path_to_directory_of_photos -name "specific_photo_names*" -exec mv --target-directory="~/path_to_new_directory" {} +