我有一个包含大约800个.tgz压缩文件的目录,每个文件夹中包含约10个文件。我想将每个压缩文件转换成同名的目录。是否有一个简单的一行命令可以完成这个任务,还是我需要编写一个脚本?
我有一个包含大约800个.tgz压缩文件的目录,每个文件夹中包含约10个文件。我想将每个压缩文件转换成同名的目录。是否有一个简单的一行命令可以完成这个任务,还是我需要编写一个脚本?
--one-top-level
,请参见https://www.gnu.org/software/tar/manual/tar.html#index-one_002dtop_002dlevel_002c-summary
旧版本需要编写脚本。您可以通过使用tar -C选项指定提取所放置的目录。tar -xvzf archive.tar.gx -C archive_dir
例如
for a in *.tar.gz
do
a_dir=${a%.tar.gz}
mkdir --parents $a_dir
tar -xvzf $a -C $a_dir
done
GNU tar
,那么这里应该是最佳答案: https://unix.stackexchange.com/a/478341/34069
为简洁起见,以下是摘录:tar -xvf bash.html_node.tar.gz --one-top-level
--one-top-level
在 GNU 版本的 tar 中不存在。这意味着它在 OSX 和某些版本的 Linux 上不受支持。 - Ian Smith创建一个文件夹,用于解压缩,命令如下:mkdir archive
,解压缩时使用-C参数并指定文件夹名称,命令如下:tar -xvf archive.zip -C archive
从一个目录提取文件到第二个目录,同时在第二个目录中保留文件名,即不包括完整的文件路径和文件扩展名。
%sh
for file in /mnt/dir1/*.tar.gz;
do
y=${file##*/};
z=${y%%.*};
mkdir -p /mnt/dir2/$z && tar -xzvf $file -C /mnt/dir2/$z;
done
嗯,如果你运行$ tar -zxf some-archive.tar.gz -C .
(注意末尾的点),一个名为some-archive/
的新目录将会在当前目录下创建。
也许这就是你在问题中所指的?这通常是我想要的,所以对你也可能适用。
-C .
是多余的,因为默认的输出直接是当前目录。 - David Cook
tar -xvzf filename.tar.gz -C /desired/path
。 - Aravind.HUmkdir -p dirpath && tar xzf archive.tar.gz -C dirpath
。该命令先创建目录,然后在指定目录下解压缩文件,确保执行成功。 - Noam Manos