2
./usr/share/doc/nss_ldap-253/pam.d/passwd |
|
ルート ディレクトリと 1 つのレベルの深さの 1 つのサブディレクトリで passwd を探します (例: ルート - レベル 1、および 1 つのサブディレクトリ - レベル 2)
1 | 。
# find -max Depth 2 -name passwd |
ルート ディレクトリとその 2 レベルまでのサブディレクトリで passwd ファイルを探します (例: ルート - レベル 1、2 つのサブディレクトリ - レベル 2 と 3)
1 | 。
# find / -max Depth 3 -name passwd |
第 2 レベルのサブディレクトリと第 4 レベルのサブディレクトリの間で passwd ファイルを探します。
1 |
# find -min Depth 3 -max Depth 5 -name passwd |
4. find コマンドで見つかったファイルに対してコマンドを実行します
次の例は、「MyCProgram.c」という名前の大文字と小文字を区別しないすべてのファイルの MD5 検証合計を計算する find コマンドを示しています。 {} は現在のファイル名に置き換えられます。
1 |
find -iname "MyCProgram.c" -exec md5sum {} ; |
2 |
d41d8cd98f00b204e9800998ecf8427e ./mycprogram.c |
3 |
d41d8cd98f00b204e9800998ecf8427e ./backup/mycprogram.c |
4 |
d41d8cd98f00b204e9800998ecf8427e ./backup/MyCProgram.c |
5 |
d41d8cd98f00b204e9800998ecf8427e ./MyCProgram.c |
5. 逆に、
と一致すると、名前が MyCProgram.c ではないすべてのファイルまたはディレクトリが表示されます。 max Depth が 1 なので、現在のディレクトリ内のファイルとディレクトリのみが表示されます。
1 |
find -max Depth 1 -not -iname "MyCProgram.c" |
4 |
./create_sample_files.sh |
6. i ノード番号を使用してファイルを検索する
すべてのファイルには一意の i ノード番号があり、それによってファイルを区別できます。類似した名前の 2 つのファイルを作成します。たとえば、1 つは末尾にスペースがあり、もう 1 つは末尾にスペースがありません。
ls の出力からは、どのファイルの末尾にスペースがあるかを区別することはできません。オプション -i を使用すると、ファイルの i ノード番号が表示されるため、2 つのファイルを区別できます。
以下に示すように、findコマンドでinode番号を指定できます。ここで、find コマンドは、inode 番号を使用してファイルの名前を変更します。
1 |
find -inum 16187430 -exec mv {} 新しいテストファイル名 ; |
このテクニックは、上記のような不適切な名前のファイルに対して何かを実行したい場合に使用できます。たとえば、file?.txt という名前のファイルの名前には特殊文字が含まれています。 「rm file?.txt」を実行すると、以下の3つのファイルがすべて削除されます。そのため、以下の手順に従って「file?.txt」ファイルを削除してください。
2 |
file1.txt file2.txt ファイル?.txt |
各ファイルの i ノード番号を見つけます。
以下に示すように: i ノード番号を使用して、特殊記号を含むファイル名を削除します。
1 |
find -inum 804180 -exec rm {} ; |
5 |
[注: 「file?.txt」という名前のファイルは現在削除されています] |
7. ファイルのアクセス許可に基づいてファイルを検索する
次の操作が適切です:
この例では、ディレクトリに次のファイルが含まれていると仮定します。これらのファイルには異なる権限があることに注意してください。
3 |
-rwxrwxrwx 1 ルート ルート 0 2009-02-19 20:31 all_for_all |
4 |
-rw-r--r-- 1 root root 0 2009-02-19 20:30Everyone_read |
5 |
---------- 1 root root 0 2009-02-19 20:31 no_for_all |
6 |
-rw------ 1 root root 0 2009-02-19 20:29ordinary_file |
7 |
-rw-r----- 1 root root 0 2009-02-19 20:27 Others_can_only_read |
8 |
----r----- 1 root root 0 2009-02-19 20:27 Others_can_only_read |
グループ読み取り権限を持つファイルを見つけます。次のコマンドを使用して、ファイルに対する他の権限を無視して、同じグループ内のユーザーに読み取り権限を持つファイルを現在のディレクトリで検索します。
1 |
検索 . -perm -g=r -type f -exec ls -l {} ; |
2 |
-rw-r--r-- 1 root root 0 2009-02-19 20:30 ./everybody_read |
3 |
-rwxrwxrwx 1 ルート ルート 0 2009-02-19 20:31 ./all_for_all |
4 |
----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read |
5 |
-rw-r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read |
グループ ユーザーに対して読み取り専用権限を持つファイルを検索します。
1 |
検索 . -perm g=r -type f -exec ls -l {} ; |
2 |
----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read |
グループ ユーザーに対して読み取り専用権限を持つファイルを検索します (8 進数の権限フォームを使用)。
1 |
検索 . -perm 040 -type f -exec ls -l {} ; |
2 |
----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read |
8. ホームディレクトリとサブディレクトリ内のすべての空のファイル (0 バイトのファイル) を検索します
以下のコマンドの出力ファイルのほとんどは、他のプログラムによって作成されたロックされたファイルと場所ファイルです
ホームディレクトリ内の空のファイルのみをリストします。
現在のディレクトリ内の非表示ではない空のファイルのみがリストされます。
1 |
find . -max Depth 1 -empty -not -name ".*" |
9. 最大 5 つのファイルを検索します
次のコマンドは、現在のディレクトリとサブディレクトリ内の最大 5 つのファイルをリストします。コマンドで処理する必要があるファイルの数に応じて、これには時間がかかります。
1 |
find . -type f -exec ls -s {} ;
|
10. 最小の 5 つのファイルを見つける方法 は、最大の 5 つのファイルを見つける方法と似ていますが、ソート順序が降順である点が異なります。
1
| find . -type f -exec ls -s {} ;
|
上記のコマンドでは、表示されているのは単なる空のファイル (0 バイトのファイル) である可能性が非常に高くなります。したがって、次のコマンドを使用すると、0 バイトのファイルの代わりに最小のファイルを一覧表示できます。
1
find . -not -empty -type f -exec ls -s {} ;
|
|
11. 指定されたファイルタイプのファイルを検索するには、-type を使用します
ソケットファイルのみを検索します
1
.-type を見つける
|
|
すべてのディレクトリを検索
1
-タイプdを見つける
|
|
すべての一般ファイルを検索
1
find .-type f
|
|
すべての隠しファイルを見つける
1
find . -type f -name ".*"
|
|
すべての隠しディレクトリを検索
1
find -type d -name ".*"
|
|
12. 変更時間を他のファイルと比較してファイルを検索
指定されたファイルより後に変更されたファイルを表示します。以下の find コマンドは、normal_file の後に作成および変更されたすべてのファイルを表示します。
03
-rw-r----- 1 root root 0 2009-02-19 20:27 Others_can_only_read
|
|
04
----r----- 1 root root 0 2009-02-19 20:27 Others_can_only_read
|
|
05
-rw------ 1 root root 0 2009-02-19 20:29ordinary_file
|
|
06
-rw-r--r-- 1 root root 0 2009-02-19 20:30Everyone_read
|
|
07
-rwxrwxrwx 1 ルート ルート 0 2009-02-19 20:31 all_for_all
|
|
08
---------- 1 root root 0 2009-02-19 20:31 no_for_all
|
|
14
./すべて禁止
|
|
13. ファイル サイズでファイルを検索します
ファイル サイズでファイルを検索するには、-size オプションを使用します。 指定したファイルより大きいファイルを検索します
1
検索 ~ -サイズ +100M
|
|
指定したファイルより小さいファイルを検索
指定されたサイズに一致するファイルを検索
注: - は指定されたサイズより小さいことを意味し、+ は指定されたサイズより大きいことを意味します。指定されたサイズとまったく同じサイズを示す記号はありません。
14. よく使用される検索操作にエイリアスを付けます
便利なものを見つけたら、それにエイリアスを付けることができます。どこでも好きな場所で実行できます。
通常、a.out ファイルを削除するために使用されます。
1 |
エイリアス rmao="find . -iname a.out -exec rm {} ;" |
Cプログラムで生成されたコアファイルを削除します。
1 |
エイリアス rmc="find . -iname core -exec rm {} ;" |
15. find コマンドを使用して、大きなパッケージ化されたファイルを削除します。
次のコマンドは、100M を超える *.zip ファイルを削除します。
1 |
find / -type f -name *.zip -size +100M -exec rm -i {} ;" |
Heavy Rain 100M のすべての *.tar ファイルを削除するには、エイリアス rm100m を使用します。同じ考え方を使用して、rm1g、rm2g、および rm5g というカテゴリ名を作成して、1G、2G、および 5G を超えるすべてのファイルを削除できます。
1 |
エイリアス rm100m="find / -type f -name *.tar -size +100M -exec rm -i {} ;" |
2 |
# alias rm1g="find / -type f -name *.tar -size +1G -exec rm -i {} ;" |
3 |
# alias rm2g="find / -type f -name *.tar -size +2G -exec rm -i {} ;" |
4 |
# alias rm5g="find / -type f -name *.tar -size +5G -exec rm -i {} ;" |
コマンド例を探す(パート2)