特定の拡張子を持つディレクトリ内のファイルを一覧表示する

特定の拡張子を持つディレクトリ内のファイルを一覧表示する

というファイルを作成しました。このファイルには、 で始まりで終わる に~/usrlibs.txtあるファイルの数が含まれています。lib.a/usr/lib directory

私は試した:

ls -l /usr/lib/lib .a | wc -w > ~/usrlibs.txt 

しかし、このコマンドは正しく機能しません。

何が足りないのでしょうか?

答え1

libで始まりで終わる.aすべてのファイルを一覧表示し、から までの/usr/lib単語数を印刷するという意味ですか?wcusrlibs.txt

ls -l /usr/lib/lib*.a | wc -w > ~/usrlibs.txt

動作するはずです。パターンの間にワイルドカードを追加するのを忘れただけです。

答え2

コマンドは、生成されるls -l /usr/lib/lib*.a | wc -w > ~/usrlibs.txt出力の単語数をカウントするだけですls -l

lib*.aこれらのファイル内の単語を数えて検索すると次のようになると思います:

user@host:~# wc -w /usr/lib/lib*.a
    222 /usr/lib/libanl.a
     31 /usr/lib/libBrokenLocale.a
     24 /usr/lib/libbsd-compat.a
  54564 /usr/lib/libc.a
    298 /usr/lib/libc_nonshared.a
    832 /usr/lib/libcrypt.a
    206 /usr/lib/libdl.a
     24 /usr/lib/libg.a
      6 /usr/lib/libieee.a
  15842 /usr/lib/libm.a
     12 /usr/lib/libmcheck.a
   2681 /usr/lib/libnsl.a
  37214 /usr/lib/libpthread.a
     99 /usr/lib/libpthread_nonshared.a
   1537 /usr/lib/libresolv.a
    600 /usr/lib/librpcsvc.a
    984 /usr/lib/librt.a
    431 /usr/lib/libsupp.a
    164 /usr/lib/libutil.a
 115771 total

答え3

「ls」の代わりに「find」を使用してみてください:

find /usr/lib -name "lib*.a" | wc -w > ~/usrlibs.txt

ワイルドカード: * を「lib*.a」というフレーズで使用すると、「lib」で始まり、「.a」で終わるすべてのファイルが表示されます。

関連情報