2013-07-01 59 views
0

我想將指定目錄下的所有HTML文件壓縮到一起,忽略文件位置,但是我的命令有一個錯誤,我不知道如何解決。它不會忽略重複的文件名,因爲我需要它。在'find'命令中忽略重複的文件名

的命令:

find /home/ -type f -name "*.html" | zip -j all-html-files [email protected] 

錯誤:該錯誤的

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 
+3

爲什麼要在收到投票結果後再刪帖?那些封閉的選票建議你在[SU]中提問,因爲它比這裏更適合。另外,我建議你使用'|在find命令之後排序-u以解決這個問題。 – fedorqui

+1

'sort -u'在這裏不起作用,因爲這些文件具有不同的路徑。 – dogbane

+0

謝謝@dogbane,我知道有人能夠幫助!你是對的,排序 - 沒有工作。 – Barney

回答

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 [email protected] 

如果找到多個具有相同名稱的文件,則找到的最後一個文件將存儲在zip文件中。

+0

正是我在找,謝謝@dogbane – Barney

0

如果-j引起的問題,爲什麼不直接在壓縮目錄CD第一,如:

CD的/ tmp /目錄 拉鍊-r -9 -v /tmp/bkp.zip。