Linux:查找大于500x500的图像然后移动到某个文件夹(Find + Xargs + Mv)

时间:2014-04-05 08:27:48

标签: linux find xargs mv

在意外格式化数据分区后运行PhotoRec恢复照片后,我留下了100个目录,其中包含恢复的图像。 使用身份命令,我能够找到所有感兴趣的照片(大于500x500)。 但是,当我使用 xargs 将其推送到 mv 命令时,我会拒绝权限!我正在使用 sudo

sudo find . -iname "*.jpg" -type f -exec identify -format '%w %h %i' '{}' \; | awk '{if ($1>300 || $2>300) print $3}' | xargs -I '{}' mv '{}' /home/simon/decent_size/

输出:

mv: cannot move ‘./recup_dir.3042/f848232448.jpg’ to ‘/home/simon/decent_size/f848232448.jpg’: Permission denied
mv: cannot move ‘./recup_dir.3042/f848239136.jpg’ to ‘/home/simon/decent_size/f848239136.jpg’: Permission denied
mv: cannot move ‘./recup_dir.571/f703451808.jpg’ to ‘/home/simon/decent_size/f703451808.jpg’: Permission denied
mv: cannot move ‘./recup_dir.2771/f835113704.jpg’ to ‘/home/simon/decent_size/f835113704.jpg’: Permission denied
...

感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

这是因为您的find命令以root权限运行,而不是xargs

你想要这样的东西:

sudo find . -iname "*.jpg" -type f -exec identify -format '%w %h %i' '{}' \; | awk '{if ($1>300 || $2>300) print $3}' | sudo xargs -I '{}' mv '{}' /home/simon/decent_size/
  

我没有检查你的命令的逻辑,只是修复了“拒绝”的权限。问题