Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 如何在bash脚本中读取目录名_Shell - Fatal编程技术网

Shell 如何在bash脚本中读取目录名

Shell 如何在bash脚本中读取目录名,shell,Shell,我在一个shell脚本中提取一个tar文件,它正在创建一个名称如下的文件夹: supportsuite-5-20-3/ 名称中的supportsuite部分总是相同的,但我事先不知道剩下的字符是什么。我正在将tar文件解压缩到一个脚本中,我需要该脚本中生成的文件夹的名称。提取tar后,将目录名放入脚本中的shell变量的最佳方法是什么 我的脚本有挑战性,所以提前感谢您提供的任何帮助 这将解压它并保留文件夹名称 find . -type f -name "*.tar" -exec tar -xv

我在一个shell脚本中提取一个tar文件,它正在创建一个名称如下的文件夹:

supportsuite-5-20-3/

名称中的supportsuite部分总是相同的,但我事先不知道剩下的字符是什么。我正在将tar文件解压缩到一个脚本中,我需要该脚本中生成的文件夹的名称。提取tar后,将目录名放入脚本中的shell变量的最佳方法是什么


我的脚本有挑战性,所以提前感谢您提供的任何帮助

这将解压它并保留文件夹名称

find . -type f -name "*.tar" -exec tar -xv '{}' \;

如果假设tar文件中的所有文件都在同一目录中,则可以执行以下操作:

DIRNAME=$(tar -tvf $TARFILE  | head -1 | sed -e 's:^.* \([^/]*\)/.*$:\1:')

请注意,如果文件名中有空格,则可能会出现错误。如果您关心这一点,您需要在sed命令中调整regex。

这有点像黑客,但这可能有助于为bash编写:


可以只执行NEWDIR=supportsuite-*尽管这两种方法都假定当前目录中有一个且只有一个以supportsuite开头的目录。
tar zxf supportsuite-5-20-3.tgz
NEWDIR=$(cd supportsuite-* && pwd)