アンドロイド

コマンドラインを使用してLinuxでファイルを見つける方法

目次:

Anonim

find コマンドは、Linuxシステム管理者の武器の中で最も強力なツールの1つです。 ユーザー指定の式に基づいてディレクトリ階層内のファイルとディレクトリを検索し、一致した各ファイルに対してユーザー指定のアクションを実行できます。

find コマンドを使用して、アクセス許可、種類、日付、所有権、サイズなどに基づいてファイルとディレクトリを検索できます。 grep sed などの他のツールと組み合わせて使用​​することもできます。

Linuxの find コマンド構文

find コマンドの一般的な構文は次のとおりです。

find

  • options 属性は、シンボリックリンク、デバッグオプション、および最適化方法の処理を制御します。path path… 属性は、findがファイルを検索する開始ディレクトリを定義します。expression属性は、オプション、検索パターン、および演算子で区切られたアクション。

ディレクトリ内のファイルを検索するには、 find コマンドを呼び出すユーザーがそのディレクトリの読み取り権限を持っている必要があります。

次の例を見てみましょう。

find -L /var/www -name "*.js"

  • オプション -L (オプション)は、シンボリックリンクをたどるように find コマンドに指示します。/var/www(パス…)は、検索されるディレクトリを指定します。(式) -name "*.js は、 .js (JavaScriptファイル)。

名前でファイルを検索

名前によるファイルの find は、おそらく find コマンドの最も一般的な使用方法です。 使用する名前でファイルを見つけるには、検索するファイルの名前の後に -name オプションを付けます。

たとえば、 /home/linuxize ディレクトリで document.pdf という名前のファイルを検索するには、次のコマンドを使用します。

find /home/linuxize -type f -name document.pdf

大文字と小文字を区別しない検索を実行するには、 -name オプションを -iname で変更します。

find /home/linuxize -type f -iname document.pdf

上記のコマンドは、「Document.pdf」、「DOCUMENT.pdf」などに一致します。

拡張子でファイルを検索

拡張子によるファイルの検索は、名前によるファイルの検索と同じです。 たとえば、 /var/log/nginx ディレクトリ内で .log.gz 終わるすべてのファイルを検索するには、次を使用できます。

find /var/log/nginx -type f -name '*.log.gz'

ワイルドカード文字を使用する場合は、パターンを引用符で囲むか、アスタリスク * 記号をバックスラッシュ \ でエスケープして、シェルによって解釈されないようにする必要があることに注意してください。

正規表現 *.log.gz と一致しないすべてのファイルを検索するには、 -not オプションを使用できます。 たとえば、 *.log.gz ないすべてのファイルを検索するには、次を使用します。

find /var/log/nginx -type f -not -name '*.log.gz'

タイプ別にファイルを検索

通常のファイル、ディレクトリ、またはシンボリックリンクなどの特定のファイルタイプを検索する必要がある場合があります。 Linuxでは、すべてがファイルです。

タイプに基づいてファイルを検索するには、 -type オプションと次のいずれかの記述子を使用して、ファイルタイプを指定します。

  • f :通常のファイル d :ディレクトリ l :シンボリックリンク c :キャラクターデバイス b :ブロックデバイス p :名前付きパイプ(FIFO) s :ソケット

たとえば、現在の作業ディレクトリ内のすべてのディレクトリを検索するには、次を使用します。

find. -type d

一般的な例は、 chmod コマンドを使用して、Webサイトのファイル許可を 644 、ディレクトリ許可を 755 に再帰的に変更することです。

find /var/www/my_website -type d -exec chmod 0755 {} ; find /var/www/my_website -type f -exec chmod 0644 {} ;

サイズでファイルを検索

ファイルサイズに基づいてファイルを見つけるには、サイズ条件とともに -size パラメーターを渡します。 次のサフィックスを使用して、ファイルサイズを指定できます。

  • b :512バイトブロック(デフォルト) c :バイト w :2バイトワード k :キロバイト M :メガバイト G :ギガバイト

次のコマンドは、 /tmp ディレクトリ内で正確に 1024 バイトのすべてのファイルを検索します。

find /tmp -type f -size 1024c

find コマンドを使用すると、指定したサイズよりも大きいまたは小さいファイルを検索することもできます。

次の例では、現在の作業ディレクトリ内で 1MB 未満のすべてのファイルを検索しています。 サイズ値の前のマイナス記号に注意してください。

find. -type f -size -1M

find. -type f -size +1M

サイズ範囲内のファイルを検索することもできます。 次のコマンドは、 2MB すべてのファイルを検索します。

find. -type f -size +1M -size 21M

変更日によるファイルの検索

find コマンドは、最後の変更、アクセス、または変更時間に基づいてファイルを検索することもできます。

サイズで検索する場合と同じように、「より大きい」または「より小さい」にプラス記号とマイナス記号を使用します。

数日前に、dovecot設定ファイルの1つを変更したが、どれを忘れたとしましょう。 /etc/dovecot/conf.d で終わり、過去5日間に変更された /etc/dovecot/conf.d ディレクトリの下のすべてのファイルを簡単にフィルタリングできます。

find /etc/dovecot/conf.d -name "*.conf" -mtime 5

-daystart オプションを使用して、変更日に基づいてファイルをフィルタリングする別の例を次に -daystart ます。 以下のコマンドは、 30 以上前に変更された /home ディレクトリ内のすべてのファイルをリストします。

find /home -mtime +30 -daystart

権限でファイルを検索

-perm オプションを使用すると、ファイルの許可に基づいてファイルを検索できます。

たとえば、 /var/www/html ディレクトリ内で正確に 775 アクセス許可を持つすべてのファイルを検索するには、次を使用します。

find /var/www/html -perm 644

数値モードの前にマイナス記号またはスラッシュ / を付けることができます。

スラッシュ / プレフィックスとして使用する場合、少なくとも1つのカテゴリ(ユーザー、グループ、またはその他)には、一致するファイルに対して少なくともそれぞれのビットが設定されている必要があります。

次のコマンド例を検討してください。

find. -perm /444

上記のコマンドは、ユーザー、グループ、またはその他のいずれかに設定された読み取り許可を持つすべてのファイルに一致します。

マイナス - がプレフィックスとして使用される場合、ファイルが少なくとも指定されたビットと一致するように設定する必要があります。 次のコマンドは、所有者とグループの読み取りおよび書き込み権限があり、他のユーザーが読み取り可能なファイルを検索します。

find. -perm -664

所有者によるファイルの検索

特定のユーザーまたはグループが所有するファイルを検索するには、 -user および -group オプションを使用します。

たとえば、ユーザー linuxize が所有するすべてのファイルとディレクトリを検索するには、次を実行します。

find / -user linuxize

これが実際の例です。 ユーザー www-data が所有するすべてのファイルを検索し、一致したファイルの所有権を www-data から nginx 変更するとします。

find / -user www-data -type f -exec chown nginx {} ;

ファイルの検索と削除

一致するすべてのファイルを削除するには、一致式の最後に -delete オプションを追加します。

結果が削除するファイルと一致すると確信できる場合にのみ、このオプションを使用していることを確認してください。 -delete オプションを使用する前に、一致したファイルを印刷することを常にお勧めします。

たとえば、 /var/log/ から .temp 終わるすべてのファイルを削除するには、次を使用します。

find /var/log/ -name `*.temp` -delete -delete オプションの使用には細心の注意を払ってください。 findコマンドラインは式として評価され、最初に -delete オプションを追加すると、コマンドは指定した開始点より下のすべてを削除します。

ディレクトリに関しては、 find rmdir と同じ空のディレクトリのみを削除でき rmdir

結論

find コマンドをさまざまなオプションと基準とともに使用する方法を示しました。

この記事では、Linuxシステム上のファイルを見つける方法の基本を理解する必要があります。 また、 find manページにアクセスして、 find コマンドの他のすべての強力なオプションについて読むことも find

ターミナルを見つける