我有一个包含文本文件的文件夹。我需要从这些文本文件中提取具有“BA”的行。我用grep命令用BA打印线条。我想将输出保存到具有相同文件名的另一个文件夹。如何更改以下代码?
grep " BA " dir/*.txt
答案 0 :(得分:2)
for i in dir/*.txt; do
grep " BA " $i > $newdir/`basename $i`
done
请注意使用basename,dir/a.txt
(比如说)并返回a.txt
答案 1 :(得分:1)
听起来像是GNU parallel的工作:
parallel --dry-run grep '" BA "' '{} > otherdir/{/}' ::: dir/{a,b,c}.txt
输出:
grep " BA " dir/a.txt > otherdir/a.txt
grep " BA " dir/b.txt > otherdir/b.txt
grep " BA " dir/c.txt > otherdir/c.txt
当您对所看到的内容感到满意时,请移除--dry-run
。
{}
被:::
之后的输入替换(这些输入也来自stdin或文件),{/}
是{}
的基本名称。