web-dev-qa-db-ja.com

lsコマンドを使用して数値名のファイルを取得するにはどうすればよいですか?

Linuxコマンドラインで、現在のディレクトリにある数値(0から9の名前のみ)のファイル名のみを一覧表示するにはどうすればよいですか?

これは Linuxコマンドプロンプトでシステム上のプロセスIDのリストを取得するにはどうすればよいですか? への後続の質問です。ここで、/proc/lsを実行しました。 。現在、プロセスIDディレクトリ以外のすべてを除外しようとしています。

1
techfun

lsgrep -E(追加の正規表現機能を備えた拡張grep)にパイプして使用し、数字のみのすべてのファイル名を検索します。

ls | grep -E '^[0-9]+$'
2
suspectus

あなたの質問のタイトルにもかかわらず、私はあなたにfindで解決策を提示したいと思います。正規表現オプション(-regex)があるため、[0-9]*は数字のみで構成されるファイル名と一致します。

現在のディレクトリ(-type f)の下にあるファイル(.)のみを再帰的に検索するには、

find . -type f -regex ".*/[0-9]*"

正規表現 "検索ではなく、パス全体での一致です。"(.*/)であるため、正規表現のman findが必要です。したがって、現在のディレクトリ内のファイルのみを検索する場合は、代わりに\./を使用してください。

find . -type f -regex "\./[0-9]*"

ただし、この場合も再帰的に検索を検索し、後で目的の結果のみを除外するため、これはあまり最適ではありません。

5
mpy

lsを使用する場合は、次を使用できます。

ls *[[:digit:]]*

* splat演算子は、任意の[[:digit:]]と一致します。次のものも使用できます。

ls *[0-9]*

これは、0〜9の数字のファイルまたはディレクトリにも一致します。

Globパターンに一致するサブディレクトリがある場合は、-dスイッチを使用して、lsがそれらに再帰しないようにすることができます。

5
tijko

ls +([0-9])を使用して、数値名のファイルのみを照合できます。

0
MOHRE