このガイドでは、特定のテキストまたは文字列を含むファイルを検索して削除する方法について説明します。 Linuxでfindコマンドを使用して名前を変更します。さらに、「しない」ファイルを見つけて削除する方法についても学びます。 名前に特定のテキストが含まれています。
はじめに
Linuxに関する重要なヒントやコツを含むPDFファイルがたくさんあります。識別しやすいように、これらのファイルに一意のファイル名を付けました。
たとえば、LDAPサーバー構成の詳細を含むファイルを ldapconfig.pdfとして保存したとします。 、 ftpconfig.pdfとしてのFTP構成ファイル 、DHCPサーバー構成の詳細( dhcp_config.pdf ) 、 等々。
私はそれらのほとんどを記事に変換してブログに投稿したので、他のユーザーもそれらの恩恵を受けることができます。
問題は、これらのファイルが大量のディスク領域を消費していることです。私は何百ものファイルを持っているので、それらを1つずつ手動で見つけて削除したくありません。すべてのファイルを見つけて削除するには、数時間かかる場合があります。
簡単な解決策を探しているうちに、この場合は「find」コマンドが役立つことがわかりました。 findコマンドのマニュアルページを調べた後、適切な解決策を見つけました。続きを読む。
1。 Linuxで名前に特定のテキストが含まれているファイルを見つけて削除する
次の例を見てください。 "Linux_guides"というディレクトリに次のファイルがあります 。
$ cd Linux_guides/
$ ls apache_config.pdf dhcp_config.pdf ldap_config.pdf php_install.pdf apache_install.pdf ftp_config.pdf mysql_install.pdf
インストール部分を完了したので、「インストール」という単語を含むファイルは必要ありません。 ファイル名で。
「インストール」というフレーズを含むファイルを1つずつ検索して削除する代わりに、次のコマンドを使用してすべてのファイルを一度に削除できます。
$ find -type f -name '*install*' -delete
上記のコマンドは、 "install"というフレーズを持つすべてのファイルを削除します 彼らの名前で、他のすべてを保持します。
delete
の場合 オプションが使用できない場合は、次のコマンドのいずれかを使用できます。
$ find -type f -name '*install*' -exec rm {} \;
または、
$ find -type f -name '*install*' -exec rm {} +
"rm"
を使用して同じことができると尋ねられるかもしれません 以下のようなコマンド:
$ rm *install*
はい、できます。ただし、rm install
コマンドは、ファイル名に「install」を含むすべてのファイルを現在のディレクトリから削除し、ディレクトリ名に"install"
が含まれている場合は文句を言います。 。
ただし、"find -type f"
コマンドは、現在のディレクトリとすべてのサブディレクトリ内のファイルのみを再帰的に検索します。
1.1。 Linuxで名前に特定のテキストが含まれているファイルを検索する
(削除ではなく)ファイルのみを検索する場合は、オプション -delete
を削除するだけです。 または-exec rm {} \;
または-exec rm {} +
上記のコマンドで。
たとえば、次のコマンドは、文字列"install"
を含むファイルのみを検索します。 彼らの名前で:
$ $ find -type f -name '*install*'
出力例:
./mysql_install.pdf ./apache_install.pdf ./php_install.pdf
2。 Linuxで名前に特定のテキストが「含まれていない」ファイルを検索して削除する
名前に特定のフレーズが含まれているファイルを削除する方法を知っています。ここで、特定のフレーズや文字列がないファイルを見つけて削除する方法を見てみましょう。 彼らの名前で。
これを行うには、 '-not'
を追加するだけです。 以下に示すように、findコマンドのパラメータ。
$ find -type f -not -name '*install*' -delete
上記のコマンドは削除されません "install"
というフレーズが含まれるファイル 名前を付けて、他のすべてを削除します。
削除の場合 オプションが使用できない場合は、次のコマンドのいずれかを使用できます。
$ find -type f -not -name '*install*' -exec rm {} \;
または、
$ find -type f -not -name '*install*' -exec rm {} +
findコマンドの詳細については、manページを参照してください。
$ man find
結論
これで、名前に特定の名前が含まれているファイルを見つけ、その名前に特定の単語が含まれているファイルと含まれていないファイルを削除する方法がわかりました。これは、ディレクトリ内の同じタイプのファイルを多数削除する場合に役立ちます。