名前が特定のパターンに一致するすべてのファイルを削除する

名前が特定のパターンに一致するすべてのファイルを削除する

私のホームディレクトリにあるファイルは次のとおりです。

23233.txt
3233.txt
ba233.txt
kh23.txt
khalith
main.sh
s2233.txt
tr233.txt
WWW.txt

.txtたとえば、名前が2つの小文字で始まり、その後に2つの数字と拡張子が続くすべてのファイルを削除するにはどうすればよいですかkh23.txt

答え1

あなたが探しているパターンは次のとおりです。

[a-z][a-z][0-9][0-9].txt

これは、2つの小文字、2つの数字、リテラル文字列のみを含む現在のディレクトリのすべての名前と一致します.txt

正規表現とは異なり、ファイル名のワイルドカードパターンは文字列の先頭と末尾に自動的に固定されるため、2つの小文字のうちの最初の文字または.txt.

このパターンを直接使用できますrm

$ rm "$HOME"/[a-z][a-z][0-9][0-9].txt

または、すべてのサブディレクトリに再帰するには、次のようにしますfind

$ find "$HOME" -name "[a-z][a-z][0-9][0-9].txt" -delete

実装がfindこれをサポートしていない場合は、-delete次の点を考慮してください。

$ find "$HOME" -name "[a-z][a-z][0-9][0-9].txt" -exec rm {} +

PS:この言葉を使う数字0から9までの数字に言及するとき。 ㅏ数字特に、233(複数のサンプルファイル名の一部)が数字であるため、多少曖昧です。(このあいまいさを排除するために質問を編集しました)

答え2

これはどうですか?

find /path/to/parent/dir/ -regextype posix-extended -regex '.*/[a-z]{2}[0-9]{2}\.txt' -exec rm {} \; 

関連情報