Linux の find コマンドは、ディレクトリ構造内のファイルを検索し、指定された操作を実行します。 Linux の find コマンドは、非常に多くの検索条件を提供し、非常に強力です。 find には強力な関数があるため、多くのオプションもあり、そのほとんどは時間をかけて理解する価値があります。システムにネットワーク ファイル システム (NFS) が含まれている場合でも、対応するアクセス許可を持っている限り、find コマンドはファイル システムでも有効です。 非常にリソースを消費する find コマンドを実行する場合、大規模なファイル システム (ここでは 30G バイトを超えるファイル システムを指します) の移動に時間がかかる可能性があるため、多くの人はバックグラウンドで実行する傾向があります。
1.コマンド形式:
find pathname -options [-print -exec -ok ...]
2.コマンド機能:
ファイルツリー内のファイルを検索し、それに応じて処理するために使用されます
3.コマンドパラメータ:
pathname: find コマンドで検索されたディレクトリのパス。たとえば、現在のディレクトリを表すには . を使用し、システム ルート ディレクトリを表すには / を使用します。
-print: find コマンドは、一致するファイルを標準出力に出力します。
-exec: find コマンドは、一致するファイルに対してこのパラメーターで指定されたシェル コマンドを実行します。対応するコマンドは「command」{ } ; の形式になっており、{ } と; の間のスペースに注意してください。
-ok: -exec と同じ機能ですが、このパラメーターで指定されたシェル コマンドをより安全なモードで実行する点が異なります。各コマンドを実行する前に、ユーザーが実行するかどうかを決定するためのプロンプトが表示されます。
4.コマンドオプション:
-name ファイル名でファイルを検索します。
-perm ファイル権限に基づいてファイルを検索します。
-prune このオプションを使用すると、現在指定されているディレクトリ内で find コマンドが検索されないようにすることができます。 - Depth オプションも使用されている場合、-prune は find コマンドによって無視されます。
-user 所有者に従ってファイルを検索します。
-group 所属するグループに従ってファイルを検索します。
-mtime -n +n 変更時刻に従ってファイルを検索します。 - n はファイル変更時刻が今から n 日以内であることを意味し、+ n はファイル変更時刻が今から n 日前であることを意味します。 find コマンドには -atime オプションと -ctime オプションもありますが、それらは -m time オプションと同じです。
-nogroup ファイルが属する有効なグループがないファイル、つまり、ファイルが属するグループが /etc/groups に存在しないファイルを検索します。
-nouser 有効な所有者のないファイルを検索します。つまり、ファイルの所有者が /etc/passwd に存在しません。
-newer file1 ! file2 変更時刻が file1 より新しく、file2 より古いファイルを検索します。
-type 次のような特定のタイプのファイルを検索します。
b - ブロックデバイスファイル。
d - ディレクトリ。
c - キャラクターデバイスファイル。
p - パイプファイル。
l - シンボリックリンクファイル。
f - 通常のファイル。
-size n: [c] ファイル長が n ブロックのファイルを検索します。c では、ファイルの長さはバイト単位です。 - Depth: ファイルを検索するときは、まず現在のディレクトリでファイルを検索し、次にそのサブディレクトリでファイルを検索します。
-fstype: 特定のタイプのファイル システムにあるファイルを検索します。これらのファイル システム タイプは通常、設定ファイル /etc/fstab にあります。この設定ファイルには、このシステムのファイル システムに関する情報が含まれています。
-mount: ファイルを検索するときにファイル システムのマウント ポイントを越えないでください。
-follow: find コマンドでシンボリック リンク ファイルが見つかった場合、そのリンクが指すファイルをたどります。
-cpio: 一致するファイルに対して cpio コマンドを使用して、これらのファイルをテープ デバイスにバックアップします。
さらに、次の 3 つの違い:
-amin n システム内で過去 N 分間にアクセスされたファイルを検索する
-atime n システム内で過去 n*24 時間以内にアクセスされたファイルを検索する
-cmin n 検索システム内で過去 N 分間にアクセスされたファイル ファイル ステータスが変更されたファイル
-ctime n システム内で過去 n*24 時間以内にファイル ステータスが変更されたファイルを検索します
-mmin n ファイル データが変更されたファイルを検索しますシステム内の最後の N 分間
-mtime n ファイルデータが 1 時間ごとに変更されたシステム内の最後の n*24 を検索します
5.例:
例 1: 指定された時間内に変更されたファイルを検索する
コマンド:
Find -Time -2
出力:
[root@peidachang ~]# find -atime -2 . ./logs/monitor ./.bashrc ./.bash_profile ./.bash_history
説明:
使用する 使用する 使用する 使用する 使用する 48 時間以内に使用する
例 2 2: キーワードに基づいて検索します
コマンド:
find . -name "*.log"
出力:
[root@localhost test]# find . -name "*.log" ./log_link.log ./log2014.log ./test4/log3-2.log ./test4/log3-3.log ./test4/log3-1.log ./log2013.log ./log2012.log ./log.log ./test5/log5-2.log ./test5/log5-3.log ./test5/log.log ./test5/log5-1.log ./test5/test3/log3-2.log ./test5/test3/log3-3.log ./test5/test3/log3-1.log ./test3/log3-2.log ./test3/log3-3.log ./test3/log3-1.log
説明:
現在のディレクトリで .log で終わるファイルを検索します。 "."現在のディレクトリを表します
例 3: ディレクトリまたはファイルのアクセス許可に従ってファイルを検索します
コマンド:
find /opt/soft/test/ -perm 777
出力:
[root@localhost test]# find /opt/soft/test/ -perm 777 /opt/soft/test/log_link.log /opt/soft/test/test4 /opt/soft/test/test5/test3 /opt/soft/test/test3
指示:
opt/soft/test/ ディレクトリ内のアクセス許可 777 を持つファイルを検索します
例 4: タイプで検索
コマンド:
find . -type f -name "*.log"
出力:
[root@localhost test]# find . -type f -name "*.log" ./log2014.log ./test4/log3-2.log ./test4/log3-3.log ./test4/log3-1.log ./log2013.log ./log2012.log ./log.log ./test5/log5-2.log ./test5/log5-3.log ./test5/log.log ./test5/log5-1.log ./test5/test3/log3-2.log ./test5/test3/log3-3.log ./test5/test3/log3-1.log ./test3/log3-2.log ./test3/log3-3.log ./test3/log3-1.log [root@localhost test]#
手順:
現在のディレクトリで .log で終わる通常のファイルを検索します
例 5: すべての現在のディレクトリを検索して並べ替えます
コマンド:
find . -type d | sort
出力:
[root@localhost test]# find . -type d | sort . ./scf ./scf/bin ./scf/doc ./scf/lib ./scf/service ./scf/service/deploy ./scf/service/deploy/info ./scf/service/deploy/product ./test3 ./test4 ./test5 ./test5/test3 [root@localhost test]#
例 6: 検索サイズ別のファイル
コマンド:
find . -size +1000c -print
出力:
[root@localhost test]# find . -size +1000c -print . ./test4 ./scf ./scf/lib ./scf/service ./scf/service/deploy ./scf/service/deploy/product ./scf/service/deploy/info ./scf/doc ./scf/bin ./log2012.log ./test5 ./test5/test3 ./test3 [root@localhost test]#
説明:
🎜現在のディレクトリで 1K を超えるファイルを検索します🎜1. Linux での find の一般的な使用例
・find path -option [ -print ] [ -exec -ok command ] {} ;
#-print 見つかったファイルを標準出力に出力します
#-exec command {} -----ファイルを見つけます File実行コマンド操作。{} と
#-ok の間にスペースがあります。ただし、操作の前にユーザーに確認する必要がある点が異なります================ ==== =============================== -name filename #filename という名前のファイルを検索します
-perm #According実行権限を検索
-user username #ファイル所有者で検索
-group groupname #グループで検索
-mtime -n +n #ファイル変更時刻でファイルを検索、-n は n 日以内、+n は n 日前を意味しますN -time -n +N #Check Gin: 0px "& GT; -Perm #検索する実行権限に従って
-username #検索するファイルの所有者に従って
Loup groupname #検索する
-- mtime - n +n #ファイルの変更時刻に基づいてファイルを検索します。-n は n 日以内を指します。+n は n 日前を指します
-atime -n +n #ファイルのアクセス時刻に基づいてファイルを検索します。-n は以内を指しますn 日、+n は n 日前を意味します
-ctime -n +n #ファイル作成時刻に基づいてファイルを検索します、-n は n 日以内を意味します、+n は n 日前を意味します
-nogroup #ファイルの作成時刻に基づいてファイルを検索します有効なグループ、つまりファイルのグループは
-NOUSER # ° ° ° なしでは /etc/Groups に存在しません。つまり、ファイルの所有者は /etc/passwd に保存されません。 n は n 日前を意味します
-ctime -n +n #ファイル作成時刻に基づいてファイルを検索します、-n は n 日以内を意味します、+n は n 日前を意味します
-nogroup #有効なグループなしでファイルを検索します、つまり、ファイル帰属グループは/etc/group
nouser#的的的的的的に存在しません。つまり、ファイルの所有者は/etc/passwdファイルにf2
-typeより古いファイルに保存されません[またはnバイトも保存されません]
- Depth #ファイルをチェックするときにファイルを横断しないでください システムマウントポイント
-follow # シンボリック リンク ファイルが見つかった場合は、リンクが指すファイルをたどります
-cpio # 一致するファイルに対して cpio コマンドを使用し、それらをテープ デバイスにバックアップします
-prune ==== = === ==========================================
$find ~ -name "* .txt" -print #$HOME の .txt ファイルをチェックして
$find を表示します。 -name "*.txt" -print
$find . -name "[A-Z]*" -pri26nbsp; #Yes 一致するファイルは cpio を使用しますテープ デバイスにバックアップするコマンド
-prune 「host*」 -print #ホスト
$find で始まるファイルをチェックします -name "[a-z][a] -z][0--9][0--9] .txt" -print #2 つの小文字と 2 つの数字で始まる txt ファイルをチェックします
$find . -perm 755 -print
$find . -perm -007 -exec ls -l {} ; #すべてのユーザーが実行できるファイルをチェックします-perm 777
$ find で読み取り、書き込み、実行します。 -type d -print ディレクトリ構造を印刷します。 -type d -print ディレクトリ以外のファイルを印刷します find /usr/include -name '*.h' -exec grep AF_INEF6 {} ; grep はサブディレクトリを再帰的に検索できないため、find と組み合わせて使用できます。 /usr/include
$find のすべてのサブディレクトリ内の .h ファイルで文字列 AF_INEF6 を検索します。 -size +1000000c -print -Print # 長さ 100C のファイル
$ Find。 -PRINT # 10 個を超える長さのファイルをチェックします (1 = 512 バイト) $ CD /
$ ETC ホーム アプリの検索 -Depth -PRINT -ivcdC65536 -o /dev/rmt0
$find /etc -name | "passwd*" -exec grep "cnscn" {} ; #cnscn user
$find があるかどうかを確認します。 -name "yao*" > ; /tmp/core.log
$find . -name "yao*" | xargs chmod o-w ============== ============= ========================= find -name april* 現在のディレクトリ内を検索 April で始まるファイル
find -name april* fprint file で始まるファイルを検索April を現在のディレクトリに置き、結果をファイルに出力します
find -name ap* -o -name May* ap または May で始まるファイルを検索します File
find /mnt -name tom.txt -ftype vfat tom という名前のファイルを検索します。 txt であり、ファイル システム タイプは /mnt の下の vfat です
find /mnt -name t.txt ! -ftype vfat /mnt で tom.txt という名前のファイルを検索し、ファイル システムの種類が vfat ではない
find /tmp -name wa* -type l /tmp ファイルで wa という名前のファイルを検索しますシンボリックリンクで始まり、シンボリックリンクの種類を持つもの
find /home HOME -MMIN +60 /home で 60 分前に変更されたファイル
find /Home -AMIN +30 でアクセスされたファイルを確認します過去 30 分間
find /Home -Newer TMP.txt tmp.txt よりも最近更新されたファイルまたはディレクトリ
find /home -anewer tmp.txt tmp.txt よりも新しいアクセス時間を持つ /home 内のファイルまたはディレクトリをチェックします
find /home -used -2 ファイルまたはディレクトリの一覧表示 変更後、2 日以内にアクセスされたファイルまたはディレクトリの一覧表示
find /home -user cnscn /home ディレクトリ内のユーザー cnscn に属するファイルまたはディレクトリの一覧表示
find /home -uid +501 ユーザーに属する /home ディレクトリ内のファイルまたはディレクトリを一覧表示します cnscn ユーザーの認識コードのファイルまたはディレクトリが 501 より大きいです
ファイル内で /Home -GROUP CNSCN list /Home を検索しますCNSCN のまたはディレクトリ
find /Home -Gid 501 501 またはディレクトリの内部グループ内の /Home をリストします
find /home -nouser ローカル ユーザーに属さない /home 内のファイルまたはディレクトリをリストします
find /home -nogroupローカルグループに属さない /home 内のファイルまたはディレクトリをリストします
find /home -name tmp.txt - max Depth 4 columns /home 内の tmp.txt の検索深さは最大 3 レベルです
find /home -name tmp.txt -min Depth 3 第 2 レベルからチェックを開始します
find /home -empty サイズ 0 のファイルまたは空のディレクトリを検索します
find /home 2 を超えるハードリンクを持つファイルまたはディレクトリを検索します
find /home -perm 0700アクセス許可 700 でファイルまたはディレクトリを検索
find /tmp -name tmp.txt -exec cat {};
Find /TMP -Name TMP.txt -OK RM {}; Find / -AMIN -10 # システム内で過去 10 分間にアクセスされたファイルを検索します
find /-atime -2 # 最後にアクセスしたファイルを検索しますシステム内の 48 時間
Find /-empty # システム内のシステムの空のファイルまたはフォルダーを検索します
find /-group cat Files
find / -mtime -1 # 過去 24 時間以内に変更されたファイルを検索しますシステム
find / -nouser #システム内で無効なユーザーに属するファイルを検索
find / -user fred #システム内で FRED に属するファイルを検索このユーザーのファイル
現在のディレクトリ内のすべての通常のファイルを確認します
---- ------------------------------------ -------------- ------------------------------------ # 検索 . -type f -exec ls -l {} ;
-rw-r--r-- 1 ルート 1 ルート 34928 2003-02-25 ./conf/httpd.conf
-rw-r--r-- 1 ルート 2003- 1 ルート ls -l コマンドを使用して、リストアップしてください
========================================== ===== ====
5 日以上前に変更された /logs ディレクトリ内のファイルを見つけて削除します:
$ find logs -type f -mtime +5 -exec -ok rm {} ;
== ==== ===========================================
当日のお問い合わせ 修正ファイル
[root@book クラス]# find ./ -mtime -1 -type f -exec ls -l {} ;
=================== === ===========================
ファイルをクエリして、表示するかどうかを尋ねます
[root@book class]# find ./ - mtime -1 -type f -ok ls -l {} ;
< ls ... ./classDB.inc.php > 13709 1 月 12 日:22 ./classDB.inc.php
[root@book クラス]# find ./ -mtime -1 -type f -ok ls -l {} ;
< ls ... ./classDB.inc.php > ; n
[root@book クラス]# ============================== == ==========
クエリを実行し、処理のために awk に渡します
[root@book class]# whok '{print $1"t"$2}'
cnscn pts/0 == ==== ===========================================
awk- --grep- --sed [root@book クラス]# df -k '{print $1}' | grep -v 'none'
ファイルシステム
sda2
sda1
[root @book class]# df -k '{print $1}' grep -v 'none'
ファイルシステム
/dev/sda2
/dev/sda1
1) /tmp 内のすべての *.h を検索し、これらのファイルで「SYSCALL_VECTOR」を検索し、最後に「SYSCALL_VECTOR」を含むすべてのファイル名を出力します。 A) find /tmp -name "*.h" -n50 grep SYSCALL_VECTOR |
B) grep SYSCALL_VECTOR /tmp/*.h |cut -d':' -f1| uniq > ファイル名
C) find /tmp -name "*.h" -exec "SYSCALL_VECTOR" {} ; 2)find / -name filename -exec rm -rf {} ;
find / -name filename -ok rm -rf {} ;
3) たとえば、ディスク上で 3M を超えるファイルを検索するには:
find 。 + 3000k -exec ls -ld {} ;
4) 見つかったものを別の場所にコピーします
find *.c -exec cp '{}' /tmp ';' 特殊なファイルがある場合は、cpio を使用できます。この構文:
find dir -name filename -print | cpio -pdv newdir
6) 2004-11-30 16:36:37 に変更されたファイルを検索します
# A=`find ./ -name "*php "` | -l --full-time $A 2>/dev/null "2004-11-30 16:36:37
find / -name ファイル名 find ver1.d ver2.d -name '*.c' -print ver1.d、ver2.d *.c ファイルを検索して印刷します。 -type d -print 現在のディレクトリから検索し、ディレクトリのみを検索します。見つけたら、パス名を出力します。
2. エラーなしの検索:
find / -name access_log 2 >/dev/null
3. サイズで検索:
find / -size 1500c (サイズ ファイルで 1,500 バイトを検索) 、c はバイトを意味します)
Find / -size +1500c (サイズが 1,500 バイトより大きいファイルを検索します。+ はそれより大きいことを意味します)
Find / -size +1500c (サイズが 1,500 バイト未満のファイルを検索します、- はそれより小さいことを意味します)
4. 時間別:
find / -amin n 過去 n 分
find / -atime n 過去 n 日間
find / -cmin n 過去 n 分間のステータス変更
find / -ctime n 過去 n 日間のステータス変更
5.その他:
find / -empty 空のファイル、空のフォルダー、サブディレクトリのないフォルダーを検索します
find / -false システム内で常に間違っているファイルを検索します
find / -fstype type 指定されたファイル システムに存在するファイルを検索します。 is ext2
Find / -gid n グループ ID n のファイル
Find / -group gname グループ名 gname のファイル
Find / - Depth n 特定のレベルで指定されたディレクトリ内のファイル コンテンツの検索を優先します
Find / -max Depth レベル特定の階層ディレクトリ内で降順で検索されます
6. ロジック
-and 条件 および -or 条件
7. 検索文字列
find . -name '*.html' -exec grep 'mailto:'{}