问题:
我有几个.gz
个文件,例如testfile1.gz
,testfile2.gz
等
我尝试zgrep
每个文件并将输出重定向到具有相同名称的新文件,但没有扩展名。我怎么能这样做?
我尝试过的事情:
我尝试了以下操作,但这并没有删除扩展程序(.gz
):
for file in hello*; do zgrep 'line' $file > $file.TEST ; done
答案 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