我有一个包含几个子目录的目录。
.
├── alembic
│ └── results.csv
├── bigdata
│ └── results.csv
├── calchipan
│ └── results.csv
我想在名为results.csv
的同一目录中创建每个results_cleaned.csv
文件的副本,在该目录中将删除某些行。已知每个子目录仅包含一个文件results.csv
。
在单个目录上运行它可以工作:
find . -name 'results.csv' | xargs grep -v "Pattern" > results_cleaned.csv
但是,在根目录上运行相同的命令只会生成一个results_cleaned.csv
文件。我了解我必须指定要在每个子目录中分别创建一个文件,该怎么做?
答案 0 :(得分:1)
您不能使用xarg
,因为所有值都馈给单个grep
。
最好遍历find
的每一行(文件名):
find . -name 'results.csv' | while read -r f
do
grep -v "Pattern" "$f" > "$(dirname "$f")/results_cleaned.csv"
done