根据 tar 文件创建目录名后解压 tar

根据 tar 文件创建目录名后解压 tar

我有不同的压缩(tgz)文件,我想创建一个带有压缩文件名的目录名称,并将该压缩文件移动到各自的文件夹中,然后将它们解压缩到那里。

例子:-

我有两个压缩文件,

   email_raw_data_latest-2017-08-01-22-00-01.tgz
   email_raw_data_latest-2017-08-02-22-00-01.tgz
   email_raw_data_latest-2017-08-03-22-00-01.tgz

我想创建第一个这样的目录,

   email_raw_data_latest-2017-08-01-22-00-01
   email_raw_data_latest-2017-08-02-22-00-01
   email_raw_data_latest-2017-08-03-22-00-01 

将压缩文件移动到受尊重的文件夹中,然后解压缩它们。卡住了,请帮助我。

答案1

GNUtar有一个-C(又名--directory)选项,可以在对 tar 文件执行任何操作之前更改目录。有了这个,你可以做这样的事情:

for t in *.tgz ; do
  bn="$(basename "$t" .tgz)"
  mkdir -p "$bn"
  tar xfz "$t" -C "$bn" 
  mv "$t" "$bn"
done

答案2

$ tar -xf email_raw_data_latest-2017-08-01-22-00-01.tgz --one-top-level
$ tar -xf email_raw_data_latest-2017-08-02-22-00-01.tgz --one-top-level
$ tar -xf email_raw_data_latest-2017-08-03-22-00-01.tgz --one-top-level

--顶层[=DIR]
将所有文件解压到 DIR 中,或者如果不带参数使用,则解压到以存档的基本名称命名的子目录中(减去 --auto-compress 可识别的标准压缩后缀)。

相关内容