サンプル
1日以内に修正されたファイルを検索する
find ./ -mtime -1
60分以内に修正されたファイルを検索する
find ./ -mmin -60
ルート直下からファイルを検索するが、エラーを表示しない
find / -name "*test*" |& grep -v "find:" find / -name "*test*" >& /dev/null
60分以内に修正されたファイルのみを検索する
find ./ -mmin -60 -type f
使い方
find [検索対象パス] [検索式]
カレント・ディレクトリ以下から,ファイル名の末尾が「.c」であるファイルを検索
$ find -name "*.c" ./hello.c ./mycat2.c ./my_cat.c
オプション | 内容 |
---|---|
-name <名> | ファイル名を指定する |
-size <数値> | ファイルサイズを指定する。10c(10バイト),10k(10Kバイト)+10k(10Kバイト以上)のように指定する |
-atime <日> | 最終アクセス日を指定する |
-amin <分> | 最終アクセス時刻をX分前で指定する |
-mtime <日> | 最終修正日を指定する |
-mmin <分> | 最終更新時刻をX分前で指定する |
-perm <MODE> | アクセス権を指定する |
-type <TYPE> | ファイルタイプを指定する。f(ファイル),d(ディレクトリ),l(シンボリックリンク)のように指定する |
-regex <名> | ファイル名を正規表現で指定する |
-iregex <名> | 大文字小文字を区別せずファイル名を正規表現で指定する |
-maxdepth <値> | 検索するディレクトリの深さを指定する |
カレント・ディレクトリ以下から,3日以内に更新されたファイルを検索。
「-3」なら3日以内,「3」なら3日前,「+3」なら3日以上。
$ find -mtime -3 ./.bash_history ./hello.c ./globtest/1.txt ./globtest/44.txt ./globtest/33.txt ./globtest/11.txt ./globtest/35.txt (以下省略)
カレント・ディレクトリ直下から,ファイルサイズが200バイト以内のファイルを検索。findコマンドは,サブディレクトリの中も再帰的に検索しますので,あるディレクトリ直下だけを調べたい場合は,「-maxdepth 1」を指定。
$ find -maxdepth 1 -size -200c ./calendar.txt ./hello.c ./.ICEauthority ./.gksu.lock ./.esd_auth ./Examples ./.Xauthority ./.dmrc
-regexもしくは-iregexオプションを使うと,ファイル名の指定に正規表現が使えます。
$ find -regex './[a-zA-Z]+.c' ./hello.c
findコマンドは,単にファイルを検索するだけではありません。検索結果のファイルに対して何らかのアクションを取ることもできます。次の図16の例では,カレント・ディレクトリ以下にあるファイルで120日以上アクセスのないファイルを削除します。
$ find -atime +120 -ok rm {} \;
-ok
はつど確認が出る
-exec は確認なしで実行
その他
ファイル名にスペースがある場合
ファイル名にスペースがある場合、パイプでxargsに繋げるとスペースでファイル名が切れてしまうので、区切り文字をヌル文字にする
find . -name '*.bak' -print0 | xargs -0 rm
-print0 で区切り文字をヌルで渡して、 xargsの -0 でヌル文字を区切りとして扱う
ファイル名にスペースがある場合 その2
find の結果をgrepやsedでいじって最後にxargsに渡したい場合は、xargsの区切り文字指定オプションを使う
find "/" -type f | grep 色々書く | sed 色々書く | xargs grep -d '\n' 'hoge'
[カテゴリ: OS > Linux]
[通知用URL]
Tweet
最終更新時間:2022年09月23日 14時30分47秒