Tar目录内容而不在归档中创建根文件夹

时间:2012-11-08 09:05:01

标签: bash tar hidden-files

我在文件夹中的bash脚本中运行以下代码段。这会创建一个没有根文件夹的存档,因为我在我正在存档的文件夹中运行脚本。

tar -pczf $ARCHIVE_NAME --exclude=${ARCHIVE_NAME} --exclude=$(basename ${0}) *

Archive Contents:
/a/
/b/
/c/
/a_normal_file

效果很好,但由于我使用*,因此不会在直接目录中存档隐藏文件。我做了一些搜索,发现archiving (ubuntu tar) hidden directories我已将其更改为:

tar -pczf $ARCHIVE_NAME --exclude=${ARCHIVE_NAME} --exclude=$(basename ${0}) .

Archive Contents:
/./a/
/./b/
/./c/
/./.a_hidden_file
/./a_normal_file

仍然有效,但现在创建了一个名为“。”的根文件夹。字符。然后内容就在那之内。我如何获得以前的结果,但它仍然将隐藏文件存档在直接目录中?

提前致谢!

2 个答案:

答案 0 :(得分:4)

使用-C, - 目录DIR

--directory=$(dirname ${0})

示例:

$ ls -a xxx
.  ..  aaa  .bbb
$ tar cvf test.tar --exclude test.tar -C xxx .
./
./.bbb
./aaa

答案 1 :(得分:1)

虽然它不会影响归档的解压缩(因为.只引用相同的目录),如果它困扰您,您可以将通配符从*更改为{{1}包括所有隐藏文件。

此外,如果您隐藏了以.[^.]* *开头的文件,例如..,则您还需要将..a添加到列表中。