查找并重命名文件扩展名不正确的所有图片

时间:2013-03-02 22:21:06

标签: terminal grep find rename

我正在寻找一种方法来自动重命名文件扩展名错误的所有图像。到目前为止,我至少知道如何获取所有这些文件的列表:

find /media/folder/ -name *.jpg -exec file {} \; | grep  'PNG\|GIF' > foobar.txt
find /media/folder/ -name *.png -exec file {} \; | grep 'JPEG\|GIF' >> foobar.txt
find /media/folder/ -name *.gif -exec file {} \; | grep 'JPEG\|PNG' >> foobar.txt

但是,我还想自动重命名。我试过像

这样的东西
find /media/folder/ -name *.jpg -exec file {} \; | grep -l PNG | rename s/.jpg/.png/

但在这种情况下,grep -lgrep -lH不会列出我认为的文件名。

1 个答案:

答案 0 :(得分:1)

-l的{​​{1}}和-H标记在您的示例中无效。与标准输入一起使用时,这些标志无效,例如来自管道的示例。这些标志仅在您指定文件(或目录和递归的grep标志)时才有效,例如:

-r

在您的示例中,grep -rl PNG path/to/dir1 file2 file3 无效,因此输出是与-l匹配的完整行,在您的示例中可能看起来像这样:

  

icon.png:PNG图像,512 x 512,8位/彩色RGBA,非隔行扫描

要获得只有文件名,也许你可以像这样截断冒号之后的所有内容:

PNG