読者です 読者をやめる 読者になる 読者になる

ディレクトリ以下の特定ディレクトリを除外しファイル列挙

shell script

特定のディレクトリを除外して、カレントディレクトリ以下のファイルを列挙する。例えば、includeを除いて、.hファイルを全部列挙。

findを使って以下のようにかける。

find . -type d -name "include" -prune -o -name "*.h" -print

列挙したファイルのファイル名とカレントディレクトリからの相対パスbasenamedirnameで得られる。

#!/bin/sh

FILEPATHS=`find . -type d -name "include" -prune -o -name "*.h" -print` 
for filepath in $FILEPATHS; do
    BASEPATH=`basename $filepath`
    DIRNAME=`dirname $filepath`
    echo $BASEPATH
    echo $DIRNAME
done

参考

findコマンドで特定のディレクトリ以下を無視する方法 - mollifier delta blog