![根据 tar 文件创建目录名后解压 tar](https://linux22.com/image/126056/%E6%A0%B9%E6%8D%AE%20tar%20%E6%96%87%E4%BB%B6%E5%88%9B%E5%BB%BA%E7%9B%AE%E5%BD%95%E5%90%8D%E5%90%8E%E8%A7%A3%E5%8E%8B%20tar.png)
我有不同的压缩(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 可识别的标准压缩后缀)。