归档(Ubuntu的焦油)隐藏的目录

目录mydir上的tar将归档隐藏的文件和隐藏的子目录,但是具有*通配符的mydir tar不会。 这是一个长期的和已知的不一致或错误?

编辑(附加信息):使用通配符的mydir tar将不会“查看”或将隐藏文件和隐藏的子目录归档到直接目录中。 但是,在mydir隐藏文件和隐藏子目录的非隐藏子目录中将被存档。

通配符不起作用。 你必须指定。 (当前目录)如果你的意思是包括隐藏文件的完整目录。 你可以做

 tar -cvpzf test.tgz . 

您可以使用:

 tar -cvpzf test.tgz * .??* 

但是,这只适用于名称> 2的隐藏文件(防止“。”和“..”)

答案是*通配符由shell处理,它不会扩展到以点开头的东西。 另一个通配符? 也不会扩展到以点开头的东西。 感谢Keith指出它是扩展的外壳,所以它与tar无关。

如果你使用shopt -s dotglob那么扩展将包含像.filename这样的东西。 感谢Andy。

使用shopt -u dotglob将其关闭。

切换dotglob选项不会改变ls本身。 相反,它只是改变了像ls *这样的展现行为。

shell扩展了通配符,所以tar甚至不会看到它。 如果你想这样做,你必须明确地添加它们。 ( .* )。 但是,最常见的做法是打开一个目录,这样当你解压的时候,所有的目录都是一样的。

 shopt -s dotglob 

这将使得

您可以使用以下命令来压缩当前目录(包括.hidden)中的所有文件/文件夹:

 tar -zcvf compressed.tgz `ls -A -1` 

最后一个参数是要压缩的文件夹。 如果你通过ls -A -1 ,你将所有文件夹都传递给当前目录... 当涉及到子目录时,.hidden文件默认已包含在压缩文件中。