スポンサーリンク
findを使ったファイル検索
下記のようなディレクトリとファイル構成だった時に、
$ tree -a . ├── .svn │ └── svnfile.txt ├── dir1 │ ├── .hiddenFile │ └── file.txt ├── dir2 └── file0.txt 3 directories, 4 files
まずは、findを使ってカレントディレクトリ以下の全てのファイルを出力してみます。
検索ディレクトリにカレントディレクトリを指定して、-typefオプションでfを指定します。
$ find . -type f
実行すると、下記のようにカレントディレクトリ以下の全てのファイルが出力されます。
$ find . -type f ./.svn/svnfile.txt ./dir1/.hiddenFile ./dir1/file.txt ./file0.txt
スポンサーリンク
findの-pruneオプションで、.svnディレクトリ以下を除外してファイル検索
下記のように-pruneオプションをつけると、指定したディレクトリ以下が検索されなくなります。
さらに、-oオプションでファイル検索を指定することで、指定したディレクトリ以外のファイルが検索されます。
(-printを最後に付けないと、.svnディレクトリも出力されてしまいます。)
$ find . -type d -name ".svn" -prune -o -type f -print
同様に、下記のようなディレクトリとファイル構成だったときに、
$ tree -a . ├── .svn │ └── svnfile.txt ├── dir1 │ ├── .hiddenFile │ └── file.txt ├── dir2 └── file0.txt 3 directories, 4 files
実行すると、下記のように.svnディレクトリ以外のファイルが出力されています。
$ find . -type d -name ".svn" -prune -o -type f -print ./dir1/.hiddenFile ./dir1/file.txt ./file0.txt
.svnディレクトリ以外のファイル数をカウントする
.svnディレクトリを除外して、ファイル数をカウントしたい場合には、パイプでつないでwc -lをつけるだけです。
$ find . -type d -name ".svn" -prune -o -type f -print | wc -l
スポンサーリンク