次/path/
の形式のファイルを含むフォルダがあります。.filetype
grep -v [string] [filename] > [filename copy].filetype
このフォルダ内のすべてのアイテムについて。私はcd /path.
ループを設定して設定する必要があると思います。私は構文についてよく知らず、何も混乱させたくありません。次の形式で作成しますか?
for [something] in *.filetype
do
grep -v [string] [filename] > "[filename].filetype"
done
??
役に立つ場合は、ファイルが特定の方法(時間や日付など)でフォーマットされていないため、順序は重要ではありませんが、ファイル名を保存する必要があります。これが可能かどうかわからない
よろしくお願いします。頭が痛くなったら申し訳ありません。
編集する:**
私の言葉は、私のファイルが特別な方法で構成されていないことです。
答え1
あなたはできます:
(cd /path && grep -vFe 'string' -- /dev/null *.filetype) > result.filetype
追加すると、ファイルが/dev/null
1つしかない場合でも、一致する行の前にファイルパスが付けられます*.filetype
。 GNU実装を介してgrep
このオプションを使用することもできます-H
。
result.filetype
他のファイルは現在の作業ディレクトリに作成されます。パターンを一致さ/path
せるには、内部で実行しないようにする必要があります。そうしないと、無限ループが発生し、最終的にディスクがいっぱいになる可能性があります。result.filetype
*.filetype
/path
再帰的にファイルを見つけるには、*.filetype
次のものを使用できますfind
。
(
cd /path &&
LC_ALL=C find . -name '*.filetype' -type f -exec \
grep -vFe 'string' -- /dev/null {} +
) > result.filetype
またはGNU実装を使用してくださいgrep
。
(
cd /path &&
LC_ALL=C grep -r --include='*.filetype' -vFe 'string' .
) > result.filetype
(隠しファイルも考慮します。)
または次のようにzsh
:
(cd /path && grep -vFe 'string' -- /dev/null **/*.filetype(.)) > result.filetype
答え2
これは役に立ちます:
for f in *
do
grep -v [string] "$f" > "new_$f"
done