gpt4 book ai didi

linux - 提取 zip 文件,然后使用不同的文件名将其 cd 进去

转载 作者:太空宇宙 更新时间:2023-11-04 10:41:22 26 4
gpt4 key购买 nike

我正在创建一个 bash 脚本来提取一个 tar 文件并 cd 进入它,然后它运行另一个脚本。到目前为止,这在我下面的代码中运行得很好,但是,我遇到了一个情况,如果提取的文件夹与 .tar 文件名不同,则会导致问题。所以我的问题是,我应该如何处理文件名与 .tar 文件名不同的特殊情况。

例如,) my_file.tar ---> 提取后 ----> my_different_file_name

#!/bin/bash

fname=$1

echo the file you are about to extract is $fname

if [ -f $fname ]; then #if the file exists
tar -xvzf $fname #tar it
cd ${fname%.*} #the `%.*` will extract filename from filename.tgz and cd into it
echo ${fname%.*}
echo $PWD
loadIt #another script to load
fi

最佳答案

你可以这样做:

 topDir=$(tar -xvzf $fname | sed "s|/.*$||" | uniq)
[ $(wc -w <<< $topDir) == 1 ] || exit 1
echo topDir=$topDir

说明:第一个命令 vebosely untars(输出所有正在解压的文件),然后获取所有前导目录名称,并将它们通过管道传输到 uniq。 (所以基本上它返回 tar 文件中所有顶级目录的列表)。下一行检查 topDir 中是否只有一个条目,否则退出。此时 $topdir 将是您要 cd 到的目录。

关于linux - 提取 zip 文件,然后使用不同的文件名将其 cd 进去,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35000929/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com