我有一个包含大约800个.tgz档案的目录,每个档案包含大约10个文件。实际上,我想将每个存档转换为同名的目录。是否有一个简单的一行命令来执行此操作,还是应该编写脚本?
答案 0 :(得分:21)
我认为你需要编写脚本。您可以使用tar -C选项指定提取所在的目录。
以下脚本假定目录不存在且必须创建。如果目录确实存在,脚本仍然可以工作 - mkdir将失败。
tar -xvzf archive.tar.gx -C archive_dir
e.g。
for a in *.tar.gz
do
a_dir=`expr $a : '\(.*\).tar.gz'`
mkdir $a_dir 2>/dev/null
tar -xvzf $a -C $a_dir
done
答案 1 :(得分:0)
创建一个您要在其中提取内容的文件夹,mkdir archive
并在提取时使用-C传递文件夹名称,
tar -xvf archive.zip -C archive
答案 2 :(得分:0)
tar -xvf bash.html_node.tar.gz --one-top-level
以上命令将存档提取到以存档文件名命名的新目录。
答案 3 :(得分:0)
将文件从一个目录提取到第二个目录,同时将文件名保留在第二个目录中,即没有完整的文件路径和文件扩展名
%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
答案 4 :(得分:-3)
好吧,如果你运行$ tar -zxf some-archive.tar.gz -C .
,(注意末尾的点),将在你当前所在的目录中创建一个名为some-archive/
的新目录。
也许这就是你的问题的意思?这是我一般想要的,所以它也适合你。