在zgrep结果上重命名文件

时间:2017-04-26 11:06:36

标签: bash shell

问题:

我有几个.gz个文件,例如testfile1.gztestfile2.gz

我尝试zgrep每个文件并将输出重定向到具有相同名称的新文件,但没有扩展名。我怎么能这样做?

我尝试过的事情:

我尝试了以下操作,但这并没有删除扩展程序(.gz):

for file in hello*; do zgrep 'line' $file > $file.TEST ; done

2 个答案:

答案 0 :(得分:3)

您可以尝试:

{{1}}

来自http://localhost/test.php/上的TLDP:

  

$ {string%substring} #Deletes $ string后面$ substring的最短匹配。

答案 1 :(得分:1)

basename命令是你的朋友:

for file in hello*; do zgrep 'line' "$file" > $(basename "$file" .gz); done

或者,只需从输出文件的名称中删除“.gz”:

for file in hello*; do zgrep 'line' "$file" > $(sed 's/.gz//' <<< "$file"); done