1つの数字で終わり、TXT拡張子を持つすべてのファイルを返しますか。
ファイル(または他の種類のノード)を見つけるための最も基本的なツールの1つは、find
ユーティリティです。
find ./ -type f -name '*[!0-9][0-9].txt'
これは検索します:
./
)から再帰的に。 find
のほとんどのバージョンのデフォルト値であるため、これを別のパスに変更するか、オフのままにすることもできます。-type f
)。他のタイプも検索したい場合は、これをオフにしておくことができます。-name '*[0-9].txt'
)名前が数字の後に.txt
が続くファイルがある場合、上記のコマンドは数字の前に数字以外の1つを必要とするため、それらのファイルが欠落します。次の同等のコマンドは、ブール演算子を使用して、数字のみのファイル名も含めます(-o
は「または」、!
は「から」)。
find ./ -type f \( -name '*[!0-9][0-9].txt' -o -name '[0-9].txt' \)
find ./ -type f -name '*[0-9].txt' ! -name '*[0-9][0-9].txt'
これは大文字と小文字が区別されることに注意してください。大文字と小文字を区別しない一致が必要な場合は、-iname
の代わりに-name
を使用して、file4.TXT
なども一致させることができます。また、ファイルがその拡張子を持つテキストファイルであると主張しているからといって、それがそうではないことにも注意してください。 Linuxでは、名前に関係なく、任意のファイルを任意のタイプにすることができます。他の拡張機能があるテキストファイルまたは拡張機能がないテキストファイルも存在する可能性があります。
プレーンな古いPOSIXグロブを使用する:
ls -d -- [0-9].txt *[!0-9][0-9].txt
Zshでは、setopt extended_glob
の~/.zshrc
を使用:
print -lr -- *[0-9].txt~*[0-9][0-9].txt
ファイル名が-
で始まらず、\
を含まない場合は、次のように入力する手間を省くことができます。
print -l *[0-9].txt~*[0-9][0-9].txt
print -l
をecho
に置き換えて、改行ではなくスペースで名前を表示します。 print -l
をls -d
に置き換えて、ls
(エイリアスに応じて色付きなど)、またはls
でフォーマットされたファイル名を表示します。ディレクトリです:
ls *[0-9].txt~*[0-9][0-9].txt
サブディレクトリ内のファイルも表示する場合は、パターンの前に**/
を追加します。
ls **/*[0-9].txt~*[0-9][0-9].txt
1桁で終わり、拡張子が.txtのファイルを返すUnixコマンド
ls -l *[0-9].txt