find コマンドの実際の使用例
find の基本的な使い方
コマンド例
ファイルサイズが 100KByte 以下のファイルを検索
$ find . -size -100k -type f
ファイルサイズが 1KByte 以上 1MByte 以下のファイルを検索
$ find . -size +1k -size -1000k -type f
今日変更されたファイルの検索
$ find . -mtime 0 -type f
30 日以上変更のないファイルとフォルダの検索
$ find . -not -mtime -30
一週間以内にアクセスされたファイルやフォルダの検索
$ find . -atime -7
更新日時順に 10 個表示
$ find . -type f -print0 | xargs -0 ls -alt | head -10
空のディレクトリの検索
$ find . -empty -type d
ファイル数をカウント
$ find . -type f | wc -l
カレントディレクトリのファイル数をカウント
$ find . -maxdepth 1 -type f | wc -l
ファイルパスを正規表現でフィルタする
$ find . | grep -E ""
find で正規表現を使う
$ find . -type f -regextype posix-egrep -regex ""
grep でファイル名のみ表示
$ grep -l "" *.txt
xargs と組み合わせる
findとxargsコマンドで-print0オプションを使う理由(改)
.c と .h ファイルの内容を正規表現でフィルタする(行番号付き)
$ find . -name "*.[ch]" -print0 | xargs -0 grep -E "" -n
cpp の場合は -name を分ける.
$ find . -name *.cpp -o -name *.h -print0 | xargs -0 grep -E "" -n
検索したファイルを移動する
$ find . -name *.c -print0 | xargs -0 mv -t ./dst
検索したファイルを削除する
$ find . -name *.c -print0 | xargs -0 rm -rf
$ find . -name *.c -delete
検索したファイルをコピーする
$ find . -name *.c -print0 | xargs -i -0 cp {} ./cp
全文置換
$ find . -type f -print0 | xargs -0 sed -i "s/hoge/huga/g"