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を使用することにより、複数の拡張子を指定することが可能です。 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の後にディレクトリを指定します。 $ 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で拡張子を指定し検索する方法でした。 |