对多个文件运行命令,并根据输入文件更改输出文件名

时间:2015-10-12 20:25:16

标签: shell awk grep

我希望在目录中的多个文件上执行管道命令。

grep -r Chr18 C* |  awk '$2>=1600000&&$2<=1700000'  > nameDependentOnInputFile.txt

我希望运行命令的每个文件都以C开头,所以我应该能够使用*来对所有这些文件运行命令。如何根据输入文件更改输出文件名?我也看到我可以覆盖初始文件,但这是不可取的。

1 个答案:

答案 0 :(得分:2)

因此,如果您尝试仅打印$2介于160000和170000之间的目录中的那些文件,那么下面的内容应该有效:

for f in /path/to/files/*.cov_af ; do
 bname=`basename $f`
 pref=${bname%%.txt}
awk '$2 >= 160000 && $2 <= 170000' $f > /path/to/store/output/${pref}_new.txt
done