ホームページ >運用・保守 >Linuxの運用と保守 >Linux はよく使用される 15 のコマンドを見つけます

Linux はよく使用される 15 のコマンドを見つけます

巴扎黑
巴扎黑オリジナル
2017-08-10 11:10:472090ブラウズ

[はじめに] ディレクトリ構造内でファイルを検索する基本的な操作に加えて、find コマンドを使用していくつかの実用的な操作を実行し、コマンド ラインの作業を容易にすることもできます。この記事では、初心者にもベテランにも役立つ Linux の find コマンドを 15 個紹介します。まず、ホーム ディレクトリにファイルを作成します。ディレクトリ構造内のファイルの検索などの基本的な操作に加えて、find コマンドを使用していくつかの実用的な操作を実行することもでき、コマンド ラインの操作を容易にします。

この記事では、初心者とベテランの両方に非常に役立つ15のLinux findコマンドを紹介します。

まず、ホーム ディレクトリに次の空のファイルを作成し、以下の find コマンドの例をテストします。

01
#vim create_sample_files.sh
02
MybashProgram.sh をタッチします
03
mycprogram.cをタッチ
04
MyCProgram.cをタッチ
05
タッチプログラム.c
06
07
mkdirバックアップ
08
CDバックアップ
09
10
MybashProgram.sh をタッチします
11
mycprogram.cをタッチ
12
MyCProgram.cをタッチ
13
タッチプログラム.c
14
15
# chmod +x create_sample_files.sh
16
17
# ./create_sample_files.sh
18
19
#ls -R
20
.:
21
MybashProgram.sh MyCProgram.c をバックアップ
22
create_sample_files.sh mycprogram.c Program.c
23
24
./バックアップ:
251. ファイル名でファイルを検索
MybashProgram.sh mycprogram.c MyCProgram.c Program.c

これは find コマンドの基本的な使い方です。次の例は、MyCProgram.c を検索名として使用して、現在のディレクトリとそのサブディレクトリ内のファイルを検索する方法を示しています。

1
# find -name "MyCProgram.c"
2
./backup/MyCProgram.c
32. 大文字と小文字を区別せずにファイル名でファイルを検索します
./MyCProgram.c

これは find コマンドの基本的な使用法です。次の例は、検索名として MyCProgram.c を使用し、大文字と小文字を区別せずに、現在のディレクトリとそのサブディレクトリでファイルを検索する方法を示しています。

1
# find -iname "MyCProgram.c"
2
./mycprogram.c
3
./backup/mycprogram.c
4
./backup/MyCProgram.c
53. min Depth と max Depth を使用して、指定したディレクトリの検索の深さを制限します。
./MyCProgram.c

ルート ディレクトリとそのサブディレクトリで passwd ファイルを見つけます。

1
# find / -name passwd
2
./usr/share/doc/nss_ldap-253/pam.d/passwd
3 ./usr/bin/passwd
4 ./etc/pam.d/passwd
5 ./etc/passwd

ルート ディレクトリと 1 つのレベルの深さの 1 つのサブディレクトリで passwd を探します (例: ルート - レベル 1、および 1 つのサブディレクトリ - レベル 2)

1# find -max Depth 2 -name passwd
2 ./etc/passwd

ルート ディレクトリとその 2 レベルまでのサブディレクトリで passwd ファイルを探します (例: ルート - レベル 1、2 つのサブディレクトリ - レベル 2 と 3)

1# find / -max Depth 3 -name passwd
2 ./usr/bin/passwd
3 ./etc/pam.d/passwd
4 ./etc/passwd

第 2 レベルのサブディレクトリと第 4 レベルのサブディレクトリの間で passwd ファイルを探します。

1 # find -min Depth 3 -max Depth 5 -name passwd
2 ./usr/bin/passwd
3 ./etc/pam.d/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"
2 .
3 ./MybashProgram.sh
4 ./create_sample_files.sh
5 ./バックアップ
6 ./プログラム.c

6. i ノード番号を使用してファイルを検索する

すべてのファイルには一意の i ノード番号があり、それによってファイルを区別できます。類似した名前の 2 つのファイルを作成します。たとえば、1 つは末尾にスペースがあり、もう 1 つは末尾にスペースがありません。

1 「テストファイル名」をタッチ
2
3 #「テストファイル名」をタッチ
4 [注: 最後にスペースがあります]
5
6 # ls -1 テスト*
7 テストファイル名
8 テストファイル名

ls の出力からは、どのファイルの末尾にスペースがあるかを区別することはできません。オプション -i を使用すると、ファイルの i ノード番号が表示されるため、2 つのファイルを区別できます。

1 ls -i1 テスト*
2 16187429 テストファイル名
3 16187430 テストファイル名

以下に示すように、findコマンドでinode番号を指定できます。ここで、find コマンドは、inode 番号を使用してファイルの名前を変更します。

1 find -inum 16187430 -exec mv {} 新しいテストファイル名 ;
2
3 # ls -i1 *テスト*
4 16187430 新しいテストファイル名
5 16187429 テストファイル名


このテクニックは、上記のような不適切な名前のファイルに対して何かを実行したい場合に使用できます。たとえば、file?.txt という名前のファイルの名前には特殊文字が含まれています。 「rm file?.txt」を実行すると、以下の3つのファイルがすべて削除されます。そのため、以下の手順に従って「file?.txt」ファイルを削除してください。

1 ls
2 file1.txt file2.txt ファイル?.txt

各ファイルの i ノード番号を見つけます。

1 ls-i1
2 804178 file1.txt
3 804179 file2.txt
4 804180 ファイル?.txt

以下に示すように: i ノード番号を使用して、特殊記号を含むファイル名を削除します。

1 find -inum 804180 -exec rm {} ;
2
3 #ls
4 ファイル1.txt ファイル2.txt
5 [注: 「file?.txt」という名前のファイルは現在削除されています]

7. ファイルのアクセス許可に基づいてファイルを検索する

次の操作が適切です:

  • 指定されたアクセス許可を持つファイルを検索する

  • 他のアクセス許可ビットを無視して、指定されたアクセス許可に一致するかどうかを確認する

  • によるとto 指定された 8 進数/記号式の権限検索

この例では、ディレクトリに次のファイルが含まれていると仮定します。これらのファイルには異なる権限があることに注意してください。

1 ls -l
2 合計 0
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 ~ - 空を見つける

ホームディレクトリ内の空のファイルのみをリストします。

1 検索 . -max Depth 1 -空


現在のディレクトリ内の非表示ではない空のファイルのみがリストされます。

1 find . -max Depth 1 -empty -not -name ".*"

9. 最大 5 つのファイルを検索します

次のコマンドは、現在のディレクトリとサブディレクトリ内の最大 5 つのファイルをリストします。コマンドで処理する必要があるファイルの数に応じて、これには時間がかかります。

1 find . -type f -exec ls -s {} ;
10. 最小の 5 つのファイルを見つける方法

は、最大の 5 つのファイルを見つける方法と似ていますが、ソート順序が降順である点が異なります。

1find . -type f -exec ls -s {} ; 上記のコマンドでは、表示されているのは単なる空のファイル (0 バイトのファイル) である可能性が非常に高くなります。したがって、次のコマンドを使用すると、0 バイトのファイルの代わりに最小のファイルを一覧表示できます。

111. 指定されたファイルタイプのファイルを検索するには、-type を使用します
find . -not -empty -type f -exec ls -s {} ;
ソケットファイルのみを検索します

1 .-type を見つけるすべてのディレクトリを検索

1-タイプdすべての一般ファイルを検索
を見つける

1find .-type fすべての隠しファイルを見つける

1find . -type f -name ".*"すべての隠しディレクトリを検索

1find -type d -name ".*"12. 変更時間を他のファイルと比較してファイルを検索
指定されたファイルより後に変更されたファイルを表示します。以下の find コマンドは、normal_file の後に作成および変更されたすべてのファイルを表示します。

01ls -lrt
02合計 0
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
09
10# -新しい通常のファイルを検索
11.
12./everybody_read
13./オールフォーオール
14./すべて禁止13. ファイル サイズでファイルを検索します
ファイル サイズでファイルを検索するには、-size オプションを使用します。

指定したファイルより大きいファイルを検索します

1検索 ~ -サイズ +100M

指定したファイルより小さいファイルを検索

1 検索 ~ -サイズ -100M

指定されたサイズに一致するファイルを検索

1 検索 ~ -サイズ 100M

注: - は指定されたサイズより小さいことを意味し、+ は指定されたサイズより大きいことを意味します。指定されたサイズとまったく同じサイズを示す記号はありません。

14. よく使用される検索操作にエイリアスを付けます

便利なものを見つけたら、それにエイリアスを付けることができます。どこでも好きな場所で実行できます。

通常、a.out ファイルを削除するために使用されます。

1 エイリアス rmao="find . -iname a.out -exec rm {} ;"
2 #ルマオ

Cプログラムで生成されたコアファイルを削除します。

1 エイリアス rmc="find . -iname core -exec rm {} ;"
2 #rmc

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 {} ;"
5
6 #rm100m
7 #rm1g
8 #rm2g
9 #rm5g

コマンド例を探す(パート2)

以上がLinux はよく使用される 15 のコマンドを見つけますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。