GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでファイルとディレクトリを削除する方法

この記事は、Linuxシェルに関する一連の記事の続きであり、ファイルとディレクトリを削除するための3つの最も便利な方法について説明しています。また、ファイルが大量に含まれているディレクトリを削除したり、名前に特殊文字が含まれているファイルやディレクトリを削除したりするなどの例外的なケースについても説明しました。わずか5分でLinuxスキルを向上させます。

「rmdir」コマンド

rmdirを使用する前に コマンドを実行するには、削除されたオブジェクトを簡単に復元できないことを知っておく必要があります。

LinuxまたはmacOSを使用している場合は、コマンドラインターミナルを開きます。 Windowsを使用している場合は、Windows Subsystem for Linux(WSL)を使用できます。

ディレクトリを削除する前に、まずディレクトリを作成しましょう:

$ mkdir /tmp/docs

それでは、 / tmp / docsという名前で削除しましょう。 次のコマンドを使用します:

$ rmdir /tmp/docs

rmdir 空のディレクトリを削除するためのコマンドです。ファイルシステムから重要なものを削除することから保護されているので、非常に便利です。

削除したいディレクトリ内にファイルを配置して、この動作を検証しましょう:

$ mkdir -p /tmp/docs

$ touch /tmp/docs/my_file

$ tree /tmp/docs

/tmp/docs
└── my_file

0 directories, 1 file

ディレクトリが空でない場合は、次のエラーが表示されます。

$ rmdir /tmp/docs
rmdir: /tmp/docs: Directory not empty

ファイルを含むディレクトリを削除するには、 rmを使用する必要があります コマンド:

$ rm -rf /tmp/docs
ワイルドカードを使用して複数のディレクトリを削除する

Linuxのすべてのコンソールコマンドは、ファイル名またはフォルダー名にワイルドカード(*)を使用してファイルおよびフォルダーを処理できます。次のフォルダ構造を削除しましょう:

$ tree /tmp/docs
/tmp/docs
├── dir1
├── dir2
└── dir3

3 directories, 0 files

ディレクトリから始まるすべてのディレクトリを削除するには 次のコマンドを使用する必要があります:

$ rmdir /tmp/docs/dir*

期待される結果は次のとおりです。

$ tree /tmp/docs
/tmp/docs

0 directories, 0 files

「rm」コマンド

rm コマンドは、ディレクトリだけでなくファイルも削除できる汎用コマンドです。ただし、 rmのデフォルトの動作 コマンドでは、フォルダを削除できません。 -rを使用できます または-R サブディレクトリを含むディレクトリを削除するための引数。

次のファイルシステム構造があると想像してみましょう。

$ tree /tmp/docs
/tmp/docs
├── dir1
│   └── my_file1
├── dir2
│   └── my_file2
└── dir3
    └── my_file3

3 directories, 3 files

/ tmp / docsを削除する場合 ディレクトリを完全に使用するには、次のコマンドを使用します。

$ rm -rf /tmp/docs

場所:

  • -r –特定のディレクトリからすべてのサブディレクトリを削除しようとします。
  • -f –事前の確認または許可なしにファイルを削除しようとしました。

/ bin / rm:引数リストが長すぎます

多くのファイルがあるディレクトリを削除しようとすると、このエラーメッセージが表示される場合があります。このエラーは、 rmに提供されたファイルの数が原因で発生します コマンドが、コマンドライン引数のサイズのシステム制限を超えています。

このようなフォルダを削除する最も簡単な方法は、検索を使用することです。 最初にすべてのファイルを削除してから、ディレクトリ自体を削除するコマンド:

$ find /tmp/docs -type f -delete

$ rm -r /tmp/docs

ここ:

  • / tmp / docs –検索用のディレクトリ。
  • -タイプf –ファイルのみを検索するように検索ユーティリティに指示します。
  • -削除 –検索ユーティリティに検索結果を削除するように指示します。

空のフォルダを作成してrsyncを使用することもできます ユーティリティ:

$ mkdir empty_dir

$ rsync -a --delete empty_dir/ /tmp/docs/

これはCPUを消費しますが、 / tmp / docsをクリーンアップするための最速の方法です。 ディレクトリ。

「検索」コマンド

findコマンドは多目的検索コマンドラインユーティリティであり、それ自体に別の記事が必要ですが、この場合は、それを使用してフォルダを削除します。

名前にパターンを使用して削除

パターンdir*ですべてのディレクトリを削除しましょう ネストされたディレクトリ名:

$ tree /tmp/docs
/tmp/docs
├── dir1
│   └── my_file1
├── dir2
│   └── my_file2
└── dir3
    └── my_file3

3 directories, 3 files

これを行うには、次のコマンドを使用します。

$ find /tmp/docs -type d -name 'dir*' -exec rm -rf {} +

$ tree /tmp/docs
/tmp/docs

0 directories, 0 files

ここで、検索 コマンドは、名前が dirで始まるすべてのネストされたディレクトリを返します :

$ find /tmp/docs -type d -name 'dir*'
/tmp/docs/dir2
/tmp/docs/dir3
/tmp/docs/dir1

そして、すでにおなじみの rm -rfを実行します すべての検索結果に対してコマンドを実行します(そのため、 {} +を使用しています シーケンス)。

フォルダ構造内の空のディレクトリをすべて削除します

多くの場合、フォルダ構造内の空のフォルダのみを削除したい場合があります。 dir1を削除しましょう およびother_dir 次の例から:

$ tree /tmp/docs
/tmp/docs
├── dir1
├── dir2
│   └── my_file2
├── dir3
│   └── my_file3
└── other_dir

4 directories, 2 files

その方法は次のとおりです。

$ find /tmp/docs -type d -empty -delete

$ tree /tmp/docs
/tmp/docs
├── dir2
│   └── my_file2
└── dir3
    └── my_file3

2 directories, 2 files

特殊文字を含むファイルを(iノードで)削除します

ディレクトリ名に特殊文字が含まれている場合、または英語以外の単語で構成されている場合は、通常の rm またはrmdir コマンドが機能しない場合があります。その場合、iノードを使用してそのディレクトリを削除できます。

iノード–ファイルシステム上のファイルまたはディレクトリを表すインデックスノード番号です。

次のコマンドを使用して、ファイルまたはディレクトリのiノード番号を見つけることができます。

$ ls -il /tmp/docs
total 0
8669007889 drwxr-xr-x  3 amaksimov  wheel  96 Dec  1 18:48 dir2
8669007891 drwxr-xr-x  3 amaksimov  wheel  96 Dec  1 18:46 dir3

この例では、 dir2 フォルダにiノードがあります8669007889 番号。

これで、この情報を使用して削除できます:

$ find /tmp/docs -inum 8669007889 -exec rm -rf {} +

ここ:

  • -inum –findユーティリティにiノード番号8669007889のファイルシステムオブジェクトを検索するように指示します 。
  • -exec rm -rf –検索ユーティリティに -rmを使用してrmを呼び出すように指示します すべての結果に対する引数( {} +
概要

この記事では、Linuxでディレクトリを削除する3つの方法について説明しました。また、名前に特殊文字が含まれる巨大なフォルダやディレクトリを削除するなどの特殊なケースについても説明しました。

この記事がお役に立てば幸いです。はいの場合は、世界中に広めるのを手伝ってください。

この記事で取り上げられている可能性のある他の興味深いユースケースをご存知の場合は、下のコメントセクションからご連絡ください。


Linux
  1. Linuxでコマンドラインからファイルとディレクトリを削除する方法

  2. Linux ファイルとディレクトリの削除

  3. CentOS / RHEL 5,6 で /tmp および /var/tmp ディレクトリ内のファイルの自動削除を無効にする方法

  1. Linuxでディレクトリを再帰的に検索および削除する方法

  2. Linux で空のディレクトリとファイルを見つけて削除する方法

  3. デフォルトの /tmp を /home/user/tmp に変更する方法

  1. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

  2. Linuxコマンドラインでファイルとディレクトリを削除する方法[初心者向けチュートリアル]

  3. UNIX / Linux :/tmp および /var/tmp ディレクトリの正しい権限は何ですか