2016-10-05 23 views
0

具有以下Linux命令我在活动目录来识别所有gif文件并列出其帧:识别(和删除)所有gif文件具有多于1个帧中的所有子目录

identify -format '%n %i\n' -- *.gif 

现在我想要修改并扩展命令以fullfil以下内容: 1.确定仅含1帧以上的.gif文件 2.查看所有子目录(现在该命令仅查看活动目录) 3。 a)命令: a)列出已识别的文件 b)删除已识别的文件

我真的很感谢你们帮助实现这个...

非常感谢你提前!

最佳, 弗洛里安

回答

1

在正确的道路上你。我建议利用find,sortawk命令来生成要删除的文件列表。

find /path/to/directory \ 
    -type f \ 
    -name "*.gif" \ 
    -exec identify -format '%n %i\n' {} \; \ 
    | sort -u \ 
    | awk '$1 > 1 {print $2}' 

这是如何工作的

  • find会扫描所有子导演与*.gif结尾的文件,并将结果传递到ImageMagick的。

  • identify将打印文件名+帧计数(什么你已经这样做)

  • sort -u将删除重复项(uniq工具也可以。)
  • awk应打印第二列(文件名),如果第一列(帧计数)大于1。

注意:这将不会删除文件,但提供一种可以检查列表,并传递给rm命令

+0

谢谢!不幸的是,我得到这个命令奇怪的结果:) 媒体:损坏的图像'/is/htdocs/.......gif'@错误/ gif.c/PingGIFImage/962。 –

+0

哎呦。看起来像'find'实用程序发现无效图像。 IM无法继续 - 所以这个解决方案不会工作:( – emcconville

相关问题