Linuxコマンドラインで、現在のディレクトリにある数値(0から9の名前のみ)のファイル名のみを一覧表示するにはどうすればよいですか?
これは Linuxコマンドプロンプトでシステム上のプロセスIDのリストを取得するにはどうすればよいですか? への後続の質問です。ここで、/proc/
でls
を実行しました。 。現在、プロセスIDディレクトリ以外のすべてを除外しようとしています。
ls
をgrep -E
(追加の正規表現機能を備えた拡張grep)にパイプして使用し、数字のみのすべてのファイル名を検索します。
ls | grep -E '^[0-9]+$'
あなたの質問のタイトルにもかかわらず、私はあなたにfind
で解決策を提示したいと思います。正規表現オプション(-regex
)があるため、[0-9]*
は数字のみで構成されるファイル名と一致します。
現在のディレクトリ(-type f
)の下にあるファイル(.
)のみを再帰的に検索するには、
find . -type f -regex ".*/[0-9]*"
正規表現 "検索ではなく、パス全体での一致です。"(.*/
)であるため、正規表現のman find
が必要です。したがって、現在のディレクトリ内のファイルのみを検索する場合は、代わりに\./
を使用してください。
find . -type f -regex "\./[0-9]*"
ただし、この場合も再帰的に検索を検索し、後で目的の結果のみを除外するため、これはあまり最適ではありません。
ls
を使用する場合は、次を使用できます。
ls *[[:digit:]]*
*
splat演算子は、任意の[[:digit:]]
と一致します。次のものも使用できます。
ls *[0-9]*
これは、0〜9の数字のファイルまたはディレクトリにも一致します。
Globパターンに一致するサブディレクトリがある場合は、-d
スイッチを使用して、lsがそれらに再帰しないようにすることができます。
ls +([0-9])
を使用して、数値名のファイルのみを照合できます。