Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 忽略'中的重复文件名;查找';命令_Unix_Command Line - Fatal编程技术网

Unix 忽略'中的重复文件名;查找';命令

Unix 忽略'中的重复文件名;查找';命令,unix,command-line,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) 该错误的原因(如果有帮助) 下面是一个使用awk的解决方案: find /hom

我试图将所有HTML文件压缩到指定目录下,忽略文件位置,但我的命令有一个错误,我不知道如何修复。它不会像我需要的那样忽略重复的文件名

命令:

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

zip error: Invalid command arguments (cannot repeat names in zip file)
该错误的原因(如果有帮助)


下面是一个使用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文件中。

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

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

为什么在获得结束投票时删除答案,然后再次发布?那些结束投票建议你加入,因为它比这里更合适。另外,我建议您在find命令后使用
|sort-u
来解决此问题。
sort-u
在这里不起作用,因为文件有不同的路径。谢谢@dogbane,我知道有人会帮上忙的!你说得对,排序-你没有工作。
find /home/ -type f -name "*.html" | awk -F/ '{a[$NF]=$0}END{for(i in a)print a[i]}' | zip -j all-html-files -@