Tar 排除所有文件而不仅仅是隐藏文件夹

Tar 排除所有文件而不仅仅是隐藏文件夹

我正在尝试将我的主文件夹中的所有内容打包到 tar 中,并且我想排除某些文件夹,例如隐藏文件夹和 test_tree (实际上它嵌套在其他文件夹中)。

我尝试执行这个命令:

tar -vcf everything.tar . --exclude='.*' --exclude='test_tree'

在主目录内部,cd ~但创建的 tar 完全是空的。到底是怎么回事?

答案1

我有同样的问题,--exclude='.*' 在 MacOS 上工作正常,但在 Linux 上不行。你可以做,

tar -vcf everything.tar 。 --exclude='./.*' --exclude='test_tree'

或者

tar -vcf everything.tar 。 --exclude='.[^/]*' --exclude='test_tree'

答案2

问题在于使用.作为源代码并告诉 tar 排除以该开头的内容。.例如,尝试使用绝对路径/home/user,或者"$PWD"如果您已经在该目录中,它应该可以正常工作。

答案3

最好的解决方案是用有问题的名称拼凑出一个文件,然后执行以下操作:

tar cf my-precious.tar -X file-of-offenders 。

(不知道 -X 是否是 GNUism,不过……但你似乎正在使用 GNU tar )。

答案4

匹配“隐藏文件”使用 shell 样式模式,使用.[^.]*.

使用.*匹配特殊目录条目.(以及..)。这通常不是您想要的。

相关内容