Unix コマンドは、1 桁の数字と TXT 拡張子で終わるすべてのファイルを返します。

Unix コマンドは、1 桁の数字と TXT 拡張子で終わるすべてのファイルを返します。

1桁の数字で終わり、TXT拡張子を持つすべてのファイルを返すコマンドは何ですか?

答え1

ファイル(または他の種類のノード)を見つける最も基本的なツールの1つがこのfindユーティリティです。

find ./ -type f -name '*[!0-9][0-9].txt'

次を検索します。

  • ..../現在のディレクトリ()で再帰的に実行されます。これを別のパスに変更したり、ほとんどのバージョンでデフォルトのままにすることもできますfind
  • ...ディレクトリ、デバイスノード、シンボリックリンクなど以外のファイルエントリの場合(-type f)。他のタイプも見つけるには、このオプションを無視できます。
  • ...与えられた名前パターンに一致する項目。 findがコマンドを受け取る前にbashやシェルがそれをglobパターンとして解釈しないように、パターンの周りに一重引用符を使用しています。アスタリスクは任意の数の文字と一致し、ファイルは数字、数字、拡張子で終わらないでください。 ( -name '*[0-9].txt')

ファイル名の後に単に数字が続くファイルがある場合、.txt上記のコマンドは数字の前に数字以外の数字が必要なため、そのファイルを見逃してしまいます。次の対応するコマンドには、ブール演算子を使用して数値のみを含むファイル名(-ois "or"および!is "not")が含まれています。

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では、名前に関係なくすべてのファイルの種類が可能です。他の拡張子があるか、まったく拡張子のないテキストファイルがある可能性があります。

答え2

一般的な古いPOSIXグローブを使用してください。

ls -d -- [0-9].txt *[!0-9][0-9].txt

答え3

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 -lls -dlsls

ls *[0-9].txt~*[0-9][0-9].txt

サブディレクトリのファイルも表示するには、**/パターンの前に次を追加します。

ls **/*[0-9].txt~*[0-9][0-9].txt

答え4

1桁の数字で終わり、拡張子が.txtのファイルを返すUnixコマンド

ls -l *[0-9].txt

関連情報