私のホームディレクトリにあるファイルは次のとおりです。
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 {} \;