我通常这样做:

tar -czvf my_directory.tar.gz my_directory

如果我只想在my_directory中包含所有内容(包括任何隐藏的系统文件),而不包括目录本身,该怎么办?我不想:

my_directory
   --- my_file
   --- my_file
   --- my_file

我想要:

my_file
my_file
my_file

当前回答

art archive:

# tar -czvf mydir.tar.gz mydir

archive:涂

# tar -xf mydir.tar.gz

其他回答

你也可以像往常一样创建存档并提取它:

tar --strip-components 1 -xvf my_directory.tar.gz
tar -C my_dir -zcvf my_dir.tar.gz `ls my_dir`
# tar all files within and deeper in a given directory
# with no prefixes ( neither <directory>/ nor ./ )
# parameters: <source directory> <target archive file>
function tar_all_in_dir {
    { cd "$1" && find -type f -print0; } \
    | cut --zero-terminated --characters=3- \
    | tar --create --file="$2" --directory="$1" --null --files-from=-
}

安全处理包含空格或其他不寻常字符的文件名。您可以选择添加一个名称'*。Sql '或类似于find命令的过滤器来限制包含的文件。

cd my_directory
tar zcvf ../my_directory.tar.gz *

使用tar的-C开关:

tar -czvf my_directory.tar.gz -C my_directory .

-C my_directory命令告诉tar将当前目录更改为my_directory,然后。意思是“添加整个当前目录”(包括隐藏文件和子目录)。

确保在执行之前执行-C my_directory。否则,您将获得当前目录中的文件。

警告:你会得到。/file-name格式的条目。Ext而不是file-name.ext!

如果需要file-name形式的条目。然后,阅读其他答案。