忽略'find'命令中的重复文件名

时间:2013-07-01 12:07:31

标签: unix command-line

我正在尝试将所有HTML文件压缩在指定目录下,忽略文件位置,但我的命令出错,我不知道如何修复。它不会忽略重复的文件名,因为我需要它。

命令:

find /home/ -type f -name "*.html" | zip -j all-html-files -@

错误:

zip error: Invalid command arguments (cannot repeat names in zip file)

该错误的原因(如果这有帮助)

zip warning:   first full name: /home/company/press/managed-saas-service.html

zip warning:  second full name: /home/company/press/2/managed-saas-service.html

zip warning: name in zip file repeated:managed-saas-service.html

2 个答案:

答案 0 :(得分:2)

以下是使用awk

的解决方案
find /home/ -type f -name "*.html" | awk -F/ '{a[$NF]=$0}END{for(i in a)print a[i]}' | zip -j all-html-files -@

如果找到多个具有相同名称的文件,找到的最后一个文件将存储在zip文件中。

答案 1 :(得分:0)

如果-j导致问题,为什么不首先在zip目录中cd,如:

cd / tmp / dir zip -r -9 -v /tmp/bkp.zip。