Linuxのfind
コマンドは、システム管理者が幅広い検索条件に基づいてファイルとディレクトリを検索 名前、タイプ、拡張子、サイズ、権限などでディレクトリやファイルを見つけることができます。
ファイルとディレクトリの検索に加えて、find
コマンドを他のコマンドと組み合わせることで、結果に対してアクションを取ることができます。, -exec
オプションを追加すると、sysadminsは外部コマンドを実行し、サイズ、名前などの指定された条件に一致するファイルのコピー、移動、削除、またはアクセス許可の変更などのアクションを実行できるようになります。
この記事では、基本的なLinuxのfindコマンドを例とともに説明することから始めます。 これはファイルおよび登録簿を見つける方法を示す。 次に、-exec
オプションを使用して、ファイルまたはディレクトリのサイズ、権限などに基づいてファイルまたはディレクトリに対して,
findコマンドの一般的な構文は
find {path} {name -of-file or dir-to-search} {action-to-take}
ここで、
このチュートリアルでは、指定されたパターンに一致するファイルとディレクトリを見つける方法 まりもあったのを実行するためのファイルやディレクトリのコマンドはあります。 このガイドはUbuntuに基づいていますが、ほとんどのLinuxディストリビューショ
ファイルとディレクトリを検索
名前または拡張子で特定のファイルを検索
特定のファイルを検索するには、ルート(/)から次のコマンド, このコマンドには、検索しているファイルの正確な名前が含まれています。
find . -name file22.txt
出力
./test/file22.txt./sales/file22.txt
結果にはパスが含まれていることに注意してください。 これは、ファイルがあるディレクトリがわからない場合、または複数の場所にある場合に重要です。
現在の場所にいる間に別のディレクトリ内のファイルを検索することもできます。 この場合、検索するディレクトリのパスを指定する必要があります。,
find ./test -name file22.txt
別のディレクトリ内の特定のファイルを探す
この場合、テストディレクトリ内の文字fileで始まるすべてのファイルを探します。
find ./test -name file*
Output
./test/file22.txt./test/file30.doc./test/file1.txt./test/file5,doc
拡張子でファイルを検索
Linuxで特定の拡張子を持つファイルを見つけるには、コマンドに追加します。,
find . -name *.txt
Output
./test/subtest/subfil.txt./test/file22.txt./test/file1.txt./home1/files32.txt./home2/file22.txt./qa/tags.txt
名前でファイルとディレクトリを検索
以下のコマンドを使用して、qa
で始まるファイルとディレクトリを探します。 私たちのコンピュータには、qatree.txt
およびqa.txt
ファイルと、qa
という名前のディレクトリがあります。,
コマンドを実行すると、
find ./ -name "qa*"
次の出力を返します
./test/qatree.pdf./test/qa.txt./home/qa
コマンドは、検索条件に一致するファイルとディレクトリの両方を返します。 探ファイルやディレクトリのみを指定する必要がありますこのコマンドです。
ファイルまたはディレクトリのみを検索
ファイルのみには、type f
スイッチを使用します。
ファイルのみ
find ./ -type f -name "qa*"
出力
./test/qatree.pdf./test/qa.txt
ディレクトリのみ
ディレクトリのみを検索するtype d
オプションを追加します。,
find ./ -type d -name "qa*"
出力
./home/qa
大文字と小文字を区別しない検索コマンド
-name
スイッチでのすべての検索は大文字と小文字 すべてのケースを取得するには、-iname
オプションを使用します。
find ./ -iname "qa*"
Output
./test/qatree.pdf./test/qa.txt./test/QAtest.txt./home/qa
複数のディレクトリからファイルを検索
異なるディレクトリにあるファイルを検索するには、コマンドにパスを追加します。, この場合、test
およびnumeric
ディレクトリをチェックインします。
find ./test ./numeric -name file22.txt -type f
Output
./test/file22.txt/root/numeric/file22.txt
すべてのディレクトリから異なる拡張子を持つ複数のファイルを検索
findコマンドを使用して、*.doc
、*.txt
*.pdf
など これは、別々に行うことができます,一度に一つの拡張機能,またはすべての目的の拡張子を含むただ一つのコマンドを使用して.,
find . -type f ( -name "*.txt" -o -name "*.pdf" -o -name "*.doc" )
output
特定のテキストを含むファイルを検索
特定のテキストを含むファイルにアクセスしたいが、ファイル名や場所を思い出せない場合があります。 このコマンドを使用すると、ターゲットテキストを含むすべてのファイ
hyperconvergence”という単語を含むすべてのファイルを探すには、次のようにします。
find / -type f -exec grep -l -i "hyperconvergence" {} ;
Output
/root/numeric/hci/root/HCIP
–iオプションを使用すると、大文字と小文字を無視し、大文字と小文字を区別しないテキスト、すなわちhyperconvergence、Hyperconvergenceなどを見つけることができます。,
特定のディレクトリ内のファイルを探すには、単にコマンドに追加します
find ./numeric -type f -exec grep -l -i "hyperconvergence" {} ;
出力
./numeric/hci
サイズに基づいてファイルとディレクトリを検索
特定の範囲内で、特定のサイズよりも小さい、等しい、または大きい、または空のすべてのファイルまたはディレクトリを見つけることができます。 検索するファイルまたはディレクトリの種類に応じて、適切なサイズの形式を使用します。,特定のサイズのndファイル–30mbに等しい
検索するにはすべての30MBのファイルを検索
find / -size 30M
指定されたサイズよりも大きいファイルを検索
find -size +2M
出力
. /Downloads/ubuntu18043.iso ./.cache/pip/http/6/e/3/8/3/6e38383f41850c3e5705d48116bc52f81b92a80500f414305057 7a9c
現在のディレクトリで10MB未満のファイルを検索
find . -type f -size -10M
サイズが100-200MBのファイルを検索する
100-200mbなどの特定の範囲内のファイルを検索する場合
find / -size +100M -size -200M
20kbより大きいディレクトリを探す
find / -type d -size +20k
空のファイルとディレクトリを検索します。,
ファイル
find ./ -type f -size 0
または
find ./ -type f –empty
ディレクトリ
find ./ -type d –empty
年齢または変更時刻によってファイルを検索
n日より古いファイルを検索
find /path/ -type f -name '*.txt' -mtime +8
-mtime +8
はtxt
8日より古いファイルを探します。,
変更日によって
これは過去17時間以内に変更されたファイルを検索します
find . -mtime -17 -type f
過去10日以内に変更されたディレクトリを検索します
find . -mtime -10 -type d
アクセスまたは変更に基づいてファイルを検索します
アクセスされた日付または時刻に基づいてファイルを検索します。 ここで確認することができます。ファイルをやってアクセスされた。
ホームディレクトリ内の過去10日以内にアクセスされていないファイルを表示します。,
find /home -atime +10
正確に10日前にアクセスされたファイル
find /home -atime 10
過去10日以内にアクセスされたファイル
find /home -atime -10
過去n日以内に変更されたファイルを見つける
/home
コマンドを使用して過去10日以内に変更されたディレクトリ;
find /home -mtime -10
特定の期間内に変更されたファイルを検索します。
たとえば、ホームディレクトリ内の6日前から15日前までに変更されたすべてのファイル。,
過去10分以内にアクセスされたファイルとディレクトリ
過去10分以内にアクセスされたファイルを検索するには、-aminオプションを
find . -amin -10 -type f
出力
./.bash_history./.profileroot@ubuntu1804:~#
過去10分以内にアクセスされたディレクトリ
find . -amin -10 -type d
特定の権限に一致するファイルを検索
構文
$ find -perm mode
ここで、modeはこれは、644, 655, 700, 777
などの数値、またはu=x, a=r+x,
などの文字のいずれかです。,
モードを指定するには、次の三つの異なる方法があります。
- 指定された正確な権限を持つファイルを検索するときに、接頭辞なしで指定します。
- With”
-
“少なくとも指定された権限を持つファイルの場合。 これにより、指定された権限と追加の高い権限を持つファイルが返されま - “
/
“を使用するには、ファイルに対するアクセス許可を持つ所有者またはグループを指定する必要があります。,
許可を得てファイルを検索777
find -perm 777
出力
./file1
少なくとも766
find-perm-766
出力
./file2./file1
コマンドは、ファイル所有者が読み取り/書き込み/実行権限を持っているすべてのファイルを探します。
- グループには読み取り/書き込み権限があります
- 他には読み取り/書き込み権限があります
そのため、この基準を満たす二つのファイルfile1とfile2を返します。, ファイルには正確な766
権限が必要ではなく、長い間追加の権限を持つことができますが、少なくとも指定された権限が必要です。
所有者が書き込み可能なファイルを探す
“/
“を使用して、所有者、グループ、または他のユーザーが書き込み可能なファイルを探します。
find -perm /222../file2./file3./file1
上記は、所有者またはグループによって書き込み可能なファイルを探します。
これは、両方で書き込み可能であるが必ずしも両方ではないファイルを返します。 両方とも書き込み可能な権限を持つファイルを表示するには、–接頭辞を使用します。,
./file2./file1
ユーザーが所有するファイルを検索
Jackが所有するすべてのファイルを検索
find /home -user jack
Output
/home/jack/home/jack/examples.desktop/home/jack/.gnupg/home/jack/.gnupg/private-keys-v1.d/home/jack/ans.cgi
ユーザーが所有する特定のファイルを検索
Jackが所有するすべてのテキストファイルを検索
find /home -user jack -iname "*.txt"
output
/home/jack/docs/file32.txt
ファイルとディレクトリをパーミッションとともに検索して一覧表示します
find -name "*.conf" | ls -l
output
結果を検索して行動します
このセクションでは、findコマンドで指定されたパターンに一致するファイルに対してどのように行動できるかを見ていきます。,
ファイルの検索とパーミッションの変更
特定のファイルタイプのパーミッションの検索とパーミッションの変更 この場合、以下に示すように、異なる権限を持つPHPファイルを使用します。,
すべてのPHPファイル(上記)を探し、その権限を755に置き換えます
find ver -name "*.php" -type f -exec chmod 755 {} ;
コマンドはver
ディレクトリ内のPHPファイルを探し、その権限を755
(rwxr-xr-x
)
結果
ファイルとディレクトリの権限の検索と変更
644の権限を持つファイルを検索し、655の権限を持つように変更します
find . -type f -perm 644 -exec chmod 655 {} ;
644の権限を持つディレクトリを探し、これを755に置き換えることもできます。,
find . -type d -perm 644
出力
./docs
docsフォルダには644の権限があります
drwxrwxr-x 2 jack jack 4096 Jan 3 12:45 docs
755
に設定するには、
find . -type d -perm 644 -exec chmod 755 {} ;
これで、755
find . -type d -perm 755
出力
正確に何を確認することができます。
./docs
上から、rootディレクトリとdocsディレクトリに755の権限があることがわかります。,
Ls –la
コマンドは、次の詳細を提供します
drwxr-xr-x 2 jack jack 4096 Jan 3 12:45 docs
ファイルまたはディレクトリを検索してコピーします
特定のファイルを検索してディレクトリにコピーします
以下のコマンドは、file22.tx
tファイルを検索し、~/tmp/images
ディレクトリ。,
find -iname file22.txt -exec cp {} ~/tmp/images ;
あるタイプのファイルをディレクトリに検索してコピーします
jpg
カレントディレクトリ内の拡張子を持つ画像などのファイルを見つけ、画像フォルダのような別の場所にコピーするには、次のようにします。
find -iname '*.jpg' -exec cp {} ~/tmp/images ;
これは、すべてのjpgファイルを見つけて
これにより、すべてのjpgファイルをにコピーします。”c34073ebf5″>フォルダ。
一つのファイルを複数のディレクトリに検索してコピー
単一のディレクトリを複数のディレクトリに検索してコピーします。,
find ~/tmp/dir1/ ~/tmp/dir2/ $HOME/3/ -maxdepth 0 -exec cp ~/numeric/hci {} ;
これにより、ファイルhciファイルを検索し、/tmp/dir1/ /tmp/dir2/
および$HOME/3/
ファイルを検索して別のディレクトリに移動します
既知のファイルをディレクトリから別のディレクトリに移動します。, universal.php
ファイルを移動するには、
find ~/folder/ -type f -name universal.php -exec mv {} ~/numeric/ ;
特定の拡張子を持つファイルを別のフォルダーに検索して移動します
find ~/numeric/ -type f -name '*.php' -exec mv {} ~/folder/ ;
特定のファイルを見つけて特定の別のフォルダーに移動します
find -type f -name uni*.* -exec mv {} ~/unifiles/ ;
コマンドは、すべてのファイルを検索します。uni
で始まり、拡張子を持つ名前。 次に、ディレクトリに移動します/unifiles/
年齢に基づいてファイルを検索および移動します
指定された日より古いファイルを検索および移動しますアーカイブなどの別の場所に。,
find /path/ -type f -name '*.pdf' -mtime +20 -exec mv {} /backup1/ ;
これにより、20日より古いpdfファイルが検索され、backup1ディレクトリに移動されます。,ファイルとディレクトリ
現在のディレクトリ内のファイルまたはディレクトリを検索および削除する構文は
find . -type f -name "file to delete" -exec rm -f {} ;
ファイルのみを削除するか、
find . -type d -name "dir-to-delete" -exec rm -rf {} ;
ディレクトリのみを削除する
特定のファイルのみを検索および削除する
tilで始まるファイルを検索および削除するには、次のようにします。
find . -type f -name "til*" -exec rm {} ;
tilで始まるディレクトリを検索して削除するには
find . -type d -name "til*" -exec rm {} ;
ファイルとディレクトリの両方を削除します
find . -name "til*" -exec rm -rf {} ;
これにより、Til文字で始まるファイルとディレクトリの両方が削除されます。,
拡張子による削除
以下は、現在のディレクトリ内のすべてのtxt
ファイルを検索して削除する方法です。 置き換えますtxt
などの別の拡張子を持つbak
、pdf
または削除する他のもの。
find . -type f -name "*.txt" -exec rm -f {} ;
各ファイルを削除する前に確認を求める場合は、以下のように-iオプションを追加します。,
find . -type f -name "*.txt" -exec rm -i {} ;
Output
デフォルトでは、-rm
はディレクトリを削除せず、–r
オプションを使用して再帰的に削除する必要があります。 これにより、空のディレクトリとファイルを含むディレクト -f
オプションは強制的に削除され、ファイルとディレクトリの両方に使用されます。
n日より古いファイルを検索および削除します
現在のディレクトリから20日より古いバックアップファイルを検索および削除します。,
find . -type f -name '*.bak' -mtime +20 -exec rm {} ;
これにより、すべての.bak
20日より古いファイルが削除されます。
ディレクトリのみを検索して削除する
dir22
find . -type d -name dir22 -exec rm -rf {} ;
ディレクトリ名の大文字小文字が一致することを確認するか、-iname
オプションを使用します。
find . -type d -iname Dir22 -exec rm -rf {} ;
Dir22
とdir22
削除する前に確認するには、-iオプションを使用します。
find . -type d -iname Dir22 -exec rm -rf -i {} ;
出力
rm:ディレクトリを削除’。/ディレクトリ22″, n
rm:ディレクトリを削除’。/ディレクトリ22″ y
このケースでは、ディレクトリにn
を入力しましたDir22
削除されず、y
dir22
削除されます。
空のファイルの検索と削除
次のコマンドのいずれかを使用して、空のファイルを検索して自動的に削除できます。
find ./ -type f -size 0 -exec rm -f {} ;
または
検索します。/-タイプf-サイズ0|xargs rm-f
または
検索します。,/-type f-size0-delete
空のディレクトリを検索して削除
空のディレクトリを削除するには、d
オプションを使用します。
find ./ -type d -empty -exec rmdir {} ;
別の選択肢は、removeの代わりにdeleteを使用することです。
find ./ -type d -empty -delete
コンピュータからシステムまたは重要なファイルを削除すると、オペレーティングシステムまたはアプリケーションが損傷したり、重要なデータが失
偶発的な削除を避けるには、root以外のユーザーアカウントを使用することをお勧めします。, また、有用ではない適切なファイルを削除し、念のためにすべてのデータファイルのバックアップを持っていることを確認してください。
次は何ですか?
先に進んで、ラボまたは非本番環境で上記のLinux findコマンドを試してみてください。 場を利用する事ができるスマートインフラ/ポジショファイルシステムの清掃活動とのCrontab. と、Linux、チェックアウトはこのオンラインコースです。