0

我这里有这个小代码

     for file in *.tar.gz;
     do tar xzvf "${file}" && rm "${file}";
     done

它提取 tar.gz 并将其删除。现在我必须创建一个文件列表文件 (.fl),其名称类似于 .tar 的子字符串。例如,我必须从 .tar.gz 的名称中删除前 5 个字母和后 5 个字母(扩展名)。对于我提取的每个 .tar.gz 。

例子:

  • 我有一个 ABC_A.tar.gz,里面有一个 ABC_A.xml。
  • 我必须制作一个 A.fl 并且在那个 A.fl 中我必须编写 ABC_A.xml

提前致谢。

4

2 回答 2

0

利用

for file in *.tar.gz
do
    # this creates the file list into a .fl file:
    tar tfz "${file}" > "${file:5:-5}.fl"
    # this extracts and afterwards removes the tar archive:
    tar xzvf "${file}" && rm "${file}"
done

您也可以将两者合二为一:

for file in *.tar.gz
do
    tar xzvf "${file}" > "${file:5:-5}.fl" && rm "${file}"
done
于 2014-03-10T10:00:20.097 回答
0

在您的循环中,您可以对每个文件执行以下操作:

# delete first five characters
name=${file:5}

# delete .tar.gz suffix
name=${file%%.tar.gz}
于 2014-03-10T10:05:08.960 回答