それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

find でカレントディレクトリの ” . " ドットを対象外にするには

find コマンドで一括処理をすると困るのが ドット

find コマンドで、ディレクトリを列挙すると、カレントディレクトリも表示される。

takuya@:~/letsencrypt$ find -type d | head
. #←これ邪魔。
./letshelp-letsencrypt
./letshelp-letsencrypt/docs
./letshelp-letsencrypt/docs/_static
./letshelp-letsencrypt/docs/_templates
./letshelp-letsencrypt/docs/api
./letshelp-letsencrypt/letshelp_letsencrypt
./letshelp-letsencrypt/letshelp_letsencrypt/testdata
./letshelp-letsencrypt/letshelp_letsencrypt/testdata/mods-available
./letshelp-letsencrypt/letshelp_letsencrypt/testdata/mods-enabled

一括処理するときに、だいたい不要なのがカレントディレクト

カレントディレクトリって、ほとんど場合、不要じゃないですか?違います?私は不要なことが多いです。

カレントディレクトリを消す

find -mindepth 1 

カレントディレクトリは深さ(depth) が 0なので、 mindepth =1とすれば、消すことが出来ます。

もうデフォルトでいいじゃんコレ。

私は、find のデフォルトをmindepth 1 にすることにしました。

ちなみに、find は引数を最初に取るので、alias 出来ないから、function を作ってalias 化のかわりとします。

function find { $( which find ) "$@" -mindepth 1 -not -iwholename '*/.git/*'  ; }

.git も使わないのでデフォルト無視としてる

参考資料

http://stackoverflow.com/questions/13525004/how-to-exclude-this-current-dot-folder-from-find-type-d