首页 > 解决方案 > 将文件名通过目录递归匹配的文件压缩在一起

问题描述

考虑一个像这样的文件系统:

folderA
   - one.png
   - two.png
   - three.png

folderB
   - one.png
   - two.png
   - three.png

folderC
   - one.png
   - two.png
   - three.png

我想将所有匹配的 .png 压缩one.png到一个名为 .zip 的文件one.zip中。需要注意的是,它应该只专门搜索文件名而不是查看文件内部,因为生成这些 .png 的代码存在,我不想匹配任何不是实际 .png 的东西。

我尝试搜索,但使用我知道使用的关键字,我得到了很多关于.zip 文件中搜索的结果。

我在 OSX Mojave 上。将不胜感激任何帮助!

谢谢,阿迪

标签: bashunixterminalfindzip

解决方案


好吧,您可以发疯,将所有one.png文件放入one.zip,将所有two.png文件放入two.zip,等等:

for file in $( find -name \*.png | sed 's:.*/::' | sort -u ); do
    zip $(basename $file .png).zip $( find -name $file )
done

推荐阅读