我有以下 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