0

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

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

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

效果很好,但由于我使用 * 它没有在直接目录中归档隐藏文件。我进行了一些搜索,发现归档(ubuntu tar)隐藏目录,然后将其更改为:

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

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

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

提前致谢!

4

2 回答 2

4

使用 -C, --directory 目录

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

例子:

$ ls -a xxx
.  ..  aaa  .bbb
$ tar cvf test.tar --exclude test.tar -C xxx .
./
./.bbb
./aaa
于 2012-11-08T10:13:00.283 回答
1

虽然它不会影响存档的解包(因为.只是指同一个目录),但如果它困扰您,您可以将通配符从*to更改为.[^.]* *也包括所有隐藏文件。

此外,如果您有以 开头的隐藏文件..,例如..a,您也需要添加..?*到列表中。

于 2012-11-08T09:18:23.783 回答