我有大约800个zip文件。我按照这个问题删除每个文件中的文件。如何删除多个Zip文件中的多个文件?
我试过了
find /myfolder -iname '*.zip' -print0|xargs -0 -i zip -d photo1.jpg
但是它确实返回错误
xargs: zip: No such file or directory
我确定我将文件放在正确的目录中。谁能帮我这个?
非常感谢您的回答。谢谢,
尝试:
find /myfolder -iname '*.zip' -exec zip -d {} photo1.jpg \;
笔记:
通用-print0/xargs
方法是好的,但是find的-exec
选项消除了对管道的需求。
压缩文件的名称必须在要删除的文件的名称之前。
如果您更喜欢管道,请尝试:
find /myfolder -iname '*.zip' -print0 | xargs -0 -i zip -d {} photo1.jpg
或者,由于-i
已弃用:
find /myfolder -iname '*.zip' -print0 | xargs -0 -I{} zip -d {} photo1.jpg
以上命令仅photo1.jpg
在zip文件的根目录中时才会删除。要从photo1.jpg
zip内的所有子目录中删除,请执行以下操作:
find /myfolder -iname '*.zip' -print0 | xargs -0 -I{} zip -d {} '*/photo1.jpg'
笔记:
为了在使用像这样的通配符时获得可靠的结果*
,将文件名放在引号中很重要,以便将glob直接传递给zip。否则,外壳程序可能会发现一个匹配项,并在将名称移交给之前进行路径名扩展zip
。
/*photo1.jpg
和之间有很大的区别*/photo1.jpg
。前者将导致所有名称以结尾的文件被删除photo1.jpg
。其中包括文件名,例如abcphoto1.jpg
。后者只会删除实际命名为的文件photo1.jpg
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句