如何以递归方式“压缩”但排除任何子文件夹中出现的特定名称的文件?

如何以递归方式“压缩”但排除任何子文件夹中出现的特定名称的文件?

例如我有文件:

./otherfile1
./otherfile2
./excludethisfile
./folder1/otherfile
./folder1/excludethisfile
./folder2/otherfile
./folder2/excludethisfile

我想递归压缩所有文件但始终排除名为“excludethisfile”的文件

====

要回答帖子“如何压缩文件夹但排除.git子文件夹”是否回答了以下问题:

不,该帖子指的是从 zip 中排除单个子文件夹的一个非常简单的情况。

我的情况是排除可能出现在任何子文件夹中、多个位置的特定名称的文件,并且我想排除这些文件中的每一个,无论它们出现在哪里。

这也并不适用于排除特定扩展名的文件的情况(例如.o ),而是按名称(例如 filename)。

答案1

使用该--exclude选项应该可以工作,首先进行“试运行”以显示要压缩的内容,

zip -sf -r file.zip .  --exclude \*/excludethisfile

然后,当一切看起来不错时,

zip -r file.zip .  --exclude \*/excludethisfile

在这种情况下,通配符*将代表要排除的文件的目录路径。

相关内容