特定の文字を含むファイルを削除する

特定の文字を含むファイルを削除する

ディレクトリにファイルのリストがあり、0または7を含むすべてのファイルを削除する必要があります。 grepを使用する必要があるようですが、よくわかりません。どんなアイデアがありますか?

答え1

あなたがすることは、特定の条件テストに対してファイルを評価し、条件テストの結果に基づいて各ファイルに対して作業を実行することです。これがこのコマンドの正確な目的ですfind

これはポータブル(POSIX互換)コマンドは、内容に「0」または「7」を含む一般ファイルを削除します。

find . -type f -exec grep -q '[07]' {} \; -exec rm {} +

気づくこれ再帰的現在のディレクトリを検索します。

これが必要でない場合は、masterデータベースが-maxdepth利用可能であることを確認できます(この場合、masterデータベースを使用することもできます。POSIX-deleteではどちらも指定しません)。

find . -maxdepth 1 -type f -exec grep -q '[07]' {} \; -delete

または、以下の技術を適用できます。

答え2

grep -l '[07]' DirToYourFiles/* | xargs rm -f

grep -lファイル名のみがリストされていることを示します。

[07]0または7を示します。

xargsそれらを命令にしてください。

ファイル名には、スペース、改行、一重引用符、二重引用符、またはバックスラッシュ文字が含まれていないと想定されます。 GNUユーティリティを使用すると、次の方法で信頼性を向上できます。

grep -lZ '[07]' DirToYourFiles/* | xargs -r0 rm -f

関連情報