【问题标题】:Name of the file decompressed after using tar使用tar解压后的文件名
【发布时间】:2018-12-06 17:03:19
【问题描述】:

基本上是 bash 的新手,我想做的是解压缩一个文件,并在获得这个新解压缩文件中的所有文件后不久循环遍历它们。

由于我是 bash 新手,我有点挣扎,我发现最快的方法是硬编码压缩文件的名称。

由于我不想硬编码更多变量,所以我想知道在运行解压缩命令后是否可以保存解压缩文件的变量(没有 .tar.gz 也是一样)。

COMP_FILE=$(ls data_compressed*)
tar zxf ${COMP_FILE}
FILE_LIST=$(ls $COMP_FILE)
echo $FILE_LIST

对 BASH 还很陌生,因此请随时纠正或指出我可以了解更多信息的任何方向。

谢谢。

【问题讨论】:

  • 我想你是 bash 的新手? :-)
  • @linuxfan 是的,这是我说的第一件事,哈哈

标签: bash tar


【解决方案1】:

%操作符可用于去除后缀,见man bash:"${COMP_FILE%.tar.gz}"

当压缩包中的文件名中有(空格字符)或其他特殊字符时,以下所有内容都会中断。

试试这个:

COMP_FILE=$(ls data_compressed*)
tar zxf "${COMP_FILE}"
FILE_LIST=$(ls "${COMP_FILE%.tar.gz}")
cd "${COMP_FILE%.tar.gz}"
for filename in ${FILE_LIST} ; do
  printf "Filename is %s\n" "${filename}"
done

感谢v,您可以想象在tar 提取数据时循环遍历文件名:

for filename in $(tar xzvf data_compressed*) ; do
  printf "Filename is %s\n" "${filename}"
done

【讨论】:

  • 非常感谢这正是我想要的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-10
  • 2013-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-14
相关资源
最近更新 更多