ls:ワイルドカード検索では、同じパターンに一致するディレクトリを表示せずにファイルのみを表示します。

ls:ワイルドカード検索では、同じパターンに一致するディレクトリを表示せずにファイルのみを表示します。

次の一般的なビジネスPCの状況があるとします。

drwxr-xr-x 1 whatever whoever       3 Oct  3 16:40 invoices2009
drwxr-xr-x 1 whatever whoever       4 Oct  3 16:40 invoices2010
drwxr-xr-x 1 whatever whoever       2 Oct  3 16:40 invoices2011
-rwxr-xr-x 1 whatever whoever  440575 Oct  3 16:40 tax2010_1
-rwxr-xr-x 1 whatever whoever  461762 Oct  3 16:40 tax2010_2
-rwxr-xr-x 1 whatever whoever  609123 Oct  3 16:40 tax2010_3

それでは、怠惰に直接入力してみましょう。

$ ls -l *2010*

あると仮定はいInvoice 2010 ディレクトリの一部が期待どおりに動作しません。 ~からディレクトリ名含む2010年年、lsファイルも一覧表示されます。2010年請求書、現在ディレクトリにある項目だけをリストしたいと思います。もっと興味深いのは、Tax2010*ファイルがまったく存在せず、例のように3つのディレクトリの代わりに50があると想像してみてください。はい、試してみました。lsでも見せるどのファイルがどのディレクトリにあるのか、すべてのファイルが現在のディレクトリにあるかのように上から下にリストします(その-Rオプションを明示的に指定しない限り、私は確かに知っています)。

また、これを行うためにも使用できることを知っていますが、単純な1行のコードでこれを実行するfind他の方法はありますか(明らかにその構文ははるかに簡単です)?ls

ベストアンサー1

あなたの質問は、「ディレクトリだけを除いてパターンごとにファイルを一覧表示する方法」のようですls

pureではこれを行う方法はありませんlsls+を組み合わせることができますgrep。たとえば、次のようになります。

ls -ld *2010* | grep -v '^d'

ただし、以下を使用することをお勧めしますfind

find . -maxdepth 1 -type f -name "*2010*"

おすすめ記事