目录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文件默认已包含在压缩文件中。