如何使tar命令排除隐藏目录

39

当我想在打包时排除目录时,通常会使用这样的语法:

tar -zcf /backup/backup.tar.gz --exclude="/home/someuser/.ssh" /home/someuser

我该如何修改以排除所有隐藏的目录,例如除了 .ssh/ 之外,我还想排除 .vnc/,.wine/ 等等。

1个回答

73

你可以使用--exclude=".*"

$ tar -czvf test.tgz test/
test/
test/seen
test/.hidden
$ tar --exclude=".*" -czvf test.tgz test/
test/
test/seen

如果你要对当前目录进行打包,请注意,因为这个模式匹配也会将其排除在外。

$ cd test
$ tar --exclude=".*" -czvf test.tgz ./
$ tar -czvf test.tgz ./
./
./seen
./.hidden

那么您需要使用--exclude='.[^/]*',如其他地方所述。

$ tar --exclude='.[^/]*' -czvf test.tgz ./
./
./seen

或者只需使用 --exclude=".+",并将路径设置为 "."。 - Vitt Volt
14
似乎 --exclude=".*" 现在是位置参数,需要放在第一位,否则没有效果:tar --exclude=".*" -czvf test.tgz directory_to_be_archived - 0range

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接