我正在尝试整理一个脚本,该脚本将运行我服务器上的所有文件(在各种子目录下),查找.jpeg文件并通过翻译器运行它们,将它们转换为非渐进式jpgs。
我有:
find /home/disk2/ -type f -iname "*.jpg"
找到所有文件。
然后,如果它找到例如1.jpg,我需要运行:
/usr/bin/jpegtrans /file location/1.jpg > /file location/1.jpg.temp
jpegtrans app将文件转换为临时文件,需要替换原始文件。 所以我需要删除原文并将1.jpg.temp重命名为1.jpg
rm /file location/1.jpg
mv /file location/1.jpg.temp /file location/1.jpg
我可以轻松地为单个文件执行此操作,但我需要在我的服务器上执行100个操作。
答案 0 :(得分:4)
将find
与-exec
:
find /home/disk2/ -type f -iname "*.jpg" -exec sh -c "/usr/bin/jpegtrans {} > {}.temp; mv -f {}.temp {}" \;
编辑:要处理文件名中的空格,请说:
find /home/disk2/ -type f -iname "*.jpg" -exec sh -c "/usr/bin/jpegtrans '{}' > '{}.temp'; mv -f '{}.temp' '{}'" \;