我有许多名称完全相同的.tgz文件,我想将它们全部解压缩到一个带有uniq名称的目录中。我的偏好是在.tgz所在的文件夹的名称后附加,
original location= /folder1/folder2/2015/04/08/something1.tgz
original location= /folder1/folder2/2015/04/09/something2.tgz
解压后,我希望它们解压缩如下
target_folder= 20150408_something1
target_folder= 20150409_something2
最佳答案
something1.tar.gz
和something2.tar.gz
没有相同的名称。我认为您是说它们包含相同的顶层文件夹/文件?
在这种情况下(并假设您的文件夹层次结构在所有tarball的路径中都是一致的),您应该可以使用类似的方法。
for arc in /folder1/folder2/2015/04/08/something1.tgz /folder1/folder2/2015/04/09/something2.tgz; do
# Get just the filename of the archive.
fname=$(basename "$arc")
# Strip off the extension from the filename.
fname=${fname%.*}
# Get just the last three directory components.
dname=$(awk -F / '{print $(NF-3)$(NF-2)$(NF-1)}' <<<"$arc")
mkdir "${dname}_$fname" || { ret=$?; echo "Could not create directory ${dname}_$fname."; exit $ret; }
tar -xvf "$arc" -C "${dname}_$fname"
done