Bash:对FIND的结果执行命令

Modified on: Sun, 21 Jul 2019 01:00:02 +0800

我正在尝试调整使用FIND命令找到的所有文件(它们是目录及其子目录中的所有文件)。我尝试了很多选项但每次都遇到不同的错误。这是我的最后一次尝试:

find /my/folder/ -name '*jpg' -exec 'mogrify -resize 900">"{}' \;

我尝试了很多其他但无济于事。出了什么问题?

作者:user60129

最佳答案

我不喜欢exec on find,它有点古老而且不可预测,特别是当你把所有引号都给它时:)

尝试使用xargs,它应该表现得更加文明

find /my/folder/ -name '*jpg' -print0 | xargs -0 -J% "mogrify -resize 900 > %"

这里有不同的东西

-print0 on find在每个文件名后面添加一个NULL字符作为分隔符

在xargs中

-0表示输入由NULL char分隔
-J%表示%应该被输入中的内容替换(在这种情况下为文件名)

作者:lynxman

相关问答

添加新评论