mydir
上的tar将归档隐藏文件和隐藏子目录,但 mydir
中带有*
通配符的的tar不会。这是一个长期存在的已知不一致或错误吗?
编辑(附加信息):带有通配符的mydir
内的tar不会“看到”,也不会将 immediate 目录中的隐藏文件和隐藏子目录存档。但是,在mydir
隐藏子目录的非隐藏子目录中,隐藏的子目录将被归档。
答案 0 :(得分:27)
使用通配符无效。你必须指定。 (当前目录)如果您的意思是包含隐藏文件的完整目录。你可以做到
tar -cvpzf test.tgz .
答案 1 :(得分:6)
您可以使用:
tar -cvpzf test.tgz * .??*
但是,这仅适用于名称为>的隐藏文件。 2(防止'。'和'..')
答案 2 :(得分:5)
答案是*
通配符由shell处理,它不会扩展为以点开头的内容。另一个通配符?
也不会扩展为以点开头的内容。感谢Keith指出它是执行扩展的shell,因此它与tar
无关。
如果您使用shopt -s dotglob
,则展开会包含.filename
等内容。感谢Andy。
使用shopt -u dotglob
将其关闭。
切换dotglob
选项不会更改ls
本身。相反,它只是像ls *
那样改变扩展行为。
编辑:我的建议在下面的评论中。
答案 3 :(得分:3)
shell扩展了通配符,因此tar甚至看不到它。如果要这样做,则必须明确添加它们。 (.*
)。但是,最常见的是tar一个目录,这样当你解开它时,它们都会转到同一个地方。
答案 4 :(得分:2)
您可以使用以下方法压缩当前目录中的所有文件/文件夹(包括.hidden)。
tar -zcvf compressed.tgz `ls -A -1`
最后一个参数是您要压缩的文件夹。如果您传递ls -A -1
,则会将当前目录中的所有文件夹传递给.
和..
。
说到子目录,默认情况下.hidden文件已包含在压缩中。
答案 5 :(得分:1)
shopt -s dotglob
这将成为