findで検索条件に拡張子を指定する方法

findコマンドでファイル一覧を取得し指定した拡張子のファイル一覧を抽出したい場合の使用例を記します。


関連記事

findで指定した拡張子のファイル名一覧を取得する

以下のようにfindでファイル一覧を取得し、grepで拡張子がtxtのものを表示しています。

find . | grep '\.txt$'

これをfindコマンドのみで記す場合は以下のようになります。

find -name \*.txt

よって、以下のような構文になります。

find ディレクトリ \*.拡張子

以下に実行例を記します。

sakura@cygwin ~$ find . -name \*.c
./const.c
./nanko/nanko/nanko.c
./sample/sample1.c
./sample/timet.c

複数の拡張子を対象にして検索する場合

上記では、txtのみの例を記しましたが、以下のように\(\)で囲み-orを使用することにより、複数の拡張子を指定することが可能です。
以下の例では、txtとshを対象に検索しています。

find . \( -name \*.txt -or -name \*.sh \)

ちなみにgrepを使用した例では、以下のようになります。

find . | grep -e '\.txt$' -e '\.sh$'

以下に実行例を記します。

sakura@cygwin /etc$ cd /etc/

sakura@cygwin /etc$ find . \( -name \*.conf -or -name \*.\*rc \)
./bash.bashrc
./csh.cshrc
./defaults/etc/bash.bashrc
./defaults/etc/csh.cshrc
./defaults/etc/cygserver.conf
./defaults/etc/inetd.conf
<snip>
./fonts/conf.d/90-synthetic.conf
./fonts/fonts.conf
./inetd.conf
./man_db.conf
./nsswitch.conf
./pki/ca-trust/ca-legacy.conf
./setup/setup.rc
./skel/.bashrc
./skel/.inputrc
./syslog.conf

よって、複数の拡張子を指定し検索する場合は、以下のようになります。

find ディレクトリ \( -name \*.拡張子 -or -name \*.拡張子 \)

3つの場合は、さらに -or -name 拡張子を指定すればよいです。

find ディレクトリ \( -name \*.拡張子 -or -name \*.拡張子 -or -name \*.拡張子 \)

複数のディレクトリを対象にする

上記の例では、ドット(.)を指定しカレントディレクトリおよびカレントディレクトリ配下のサブディレクトリを対象に
指定した拡張子のファイルを検索した例を記しました。

複数のディレクトリを指定したい場合は、findの後にディレクトリを指定します。
以下に/etc, /varを対象にlog, conf拡張子ファイル指定し実行した時の出力例を記します。

$ find /etc /var/ \( -name \*.log -or -name \*.conf \)
/etc/defaults/etc/cygserver.conf
/etc/defaults/etc/inetd.conf
/etc/defaults/etc/man_db.conf
/etc/defaults/etc/pki/ca-trust/ca-legacy.conf
/etc/defaults/etc/syslog.conf
/etc/fonts/conf.d/10-scale-bitmap-fonts.conf
/etc/fonts/conf.d/20-unhint-small-vera.conf
/etc/fonts/conf.d/30-metric-aliases.conf
/etc/fonts/conf.d/30-urw-aliases.conf
/etc/fonts/conf.d/40-nonlatin.conf
/etc/fonts/conf.d/45-latin.conf
/etc/fonts/conf.d/49-sansserif.conf
/etc/fonts/conf.d/50-user.conf
/etc/fonts/conf.d/51-local.conf
/etc/fonts/conf.d/60-latin.conf
/etc/fonts/conf.d/65-fonts-persian.conf
/etc/fonts/conf.d/65-nonlatin.conf
/etc/fonts/conf.d/69-unifont.conf
/etc/fonts/conf.d/80-delicious.conf
/etc/fonts/conf.d/90-synthetic.conf
/etc/fonts/fonts.conf
/etc/inetd.conf
/etc/man_db.conf
/etc/nsswitch.conf
/etc/pki/ca-trust/ca-legacy.conf
/etc/syslog.conf
/var/log/setup.log

以上、findで拡張子を指定し検索する方法でした。

linux_btm_top.html is not found or not readable.

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS