问题:
我有几个.gz文件,如testfile1.gz、testfile2.gz等。
我正在尝试zgrep每个文件,并将输出重定向到同名但没有扩展名的新文件。我怎么能这么做?
我尝试过的:
我尝试了以下操作,但这并没有删除扩展(.gz):
for file in hello*; do zgrep 'line' $file > $file.TEST ; done发布于 2017-04-26 11:31:36
你可以试试:
for file in hello*.gz; do
zgrep 'line' > "${file%.gz}.TEST"
done从TLDP到操纵弦
${string%substring} #从$substring的后面删除最短匹配的$string。
发布于 2017-04-26 11:09:35
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
https://stackoverflow.com/questions/43632420
复制相似问题