gunzip 并按照 zip 文件的名称创建目录

gunzip 并按照 zip 文件的名称创建目录

我有以下 gzip 文件:hdf5-1.8.18.tar.gz.当我使用以下命令解压缩文件时:

gunzip < hdf5-1.8.18.tar.gz | tar xf -

它解压缩到创建的以下目录中:hdf5-1.8.18。由于“-”的原因,该目录使用起来不太方便,因此我使用以下命令更改了该目录的名称:

mv hdf5-1.8.18 hdf5

但是使用这个命令我丢失了“1.8.18”版本信息:因此我可以做一个丑陋的解决方法,例如:

mkdir hdf5
mv hdf5-1.8.18 hdf5/1.8.18

我发现这个解决方案很丑陋,因此我想知道是否没有更直接的方法来做到这一点。谢谢你!

答案1

您可能想看看-C的选项tar

tar zxf hdf5-1.8.18.tar.gz -C hdf

将解压、解压并将目录放置在hdf/目录下。

答案2

首先,如果您稍微重新措辞一下您的问题会更容易。感觉可以通过某种脚本轻松解决。以下应该适用于 BASH 脚本。使用文件名作为第一个参数运行它。例如,“./change_name_script.sh hdf5-1.8.18.tar.gz”,它将按照您想要的方式工作

#!/bin/bash
filename=$1

gunzip < $filename | tar xf -
move_filename=$(echo $filename | sed -r 's/.tar.gz$//')
first_part=$(echo "$move_filename" | sed -r 's/-.*$//')
second_part=$(echo "$move_filename" | sed -r 's/^.*-//')

mkdir $first_part
mv $move_filename $first_part/$second_part

相关内容