我通常这样做:
tar -czvf my_directory.tar.gz my_directory
如果我只想在my_directory中包含所有内容(包括任何隐藏的系统文件),而不包括目录本身,该怎么办?我不想:
my_directory
--- my_file
--- my_file
--- my_file
我想要:
my_file
my_file
my_file
我通常这样做:
tar -czvf my_directory.tar.gz my_directory
如果我只想在my_directory中包含所有内容(包括任何隐藏的系统文件),而不包括目录本身,该怎么办?我不想:
my_directory
--- my_file
--- my_file
--- my_file
我想要:
my_file
my_file
my_file
当前回答
这对我来说很有效。
tar -cvf my_dir.tar.gz -C /my_dir/ $(find /my_dir/ -maxdepth 1 -printf '%P ')
你也可以用
tar -cvf my_dir.tar.gz -C /my_dir/ $(find /my_dir/ -mindepth 1 -maxdepth 1 -printf '%P ')
在第一个命令中,find返回my_dir的文件和子目录列表。 但是,目录my_dir本身包含在该列表中为'。' -printf参数删除包括'在内的完整路径。’以及所有CRLF 然而,printf格式字符串'%P '中的空格在my_dir的文件和子目录列表中留下了残余,可以通过find命令结果中的前导空格看到。
这对TAR来说不是问题,但如果你想修复这个问题,就像第二个命令一样添加-mindepth 1。
其他回答
如果它是Unix/Linux系统,并且你关心隐藏文件(会被*漏掉),你需要做:
cd my_directory
tar zcvf ../my_directory.tar.gz * .??*
我不知道Windows下的隐藏文件是什么样子。
使用pax。
Pax是一个被弃用的包,但它以一种简单的方式完美地完成了这项工作。
pax -w > mydir.tar mydir
我发现最简单的方法是:
CD my_dir && tar -czvf ../my_dir.tar.gz *
tar -C my_dir -zcvf my_dir.tar.gz `ls my_dir`
cd DIRECTORY
tar -czf NAME.tar.gz *
星号将包括所有内容,甚至包括隐藏的内容