rmコマンド Linuxではファイルとディレクトリを削除するために使用されます。各ファイル名を指定していくつかのファイルを削除するために使用することも、-r
とともに使用することもできます。 引数(再帰的 )ディレクトリとその下にあるディレクトリツリー構造全体を削除します。
rmコマンドに使用する構文 は:
$ rm <file1> <file2> ... <fileN> $ rm -r <directory1> <directory2> ... <directoryN> <target_directory>
Linuxでファイルとディレクトリを削除する
これらの構文を組み合わせて、ファイルとディレクトリを一度に削除することもできます。
$ rm -r file1 file2 file3 directory1 directory2

名前が類似している場合、つまり、名前に同じパターンが含まれている場合は、ワイルドカードを使用してファイル名とディレクトリ名を指定することもできます。これは、同じファイル拡張子のファイルを多数削除する場合に特に便利です。
たとえば、ファイル名が文字列「 file」で始まるすべてのファイルを削除するには ‘、実行できます:
$ rm file*
同様に、拡張子が'.txt'
のすべてのファイルを削除するには 、実行できます:
$ rm *.txt
基本的に、ワイルドカードの機能は次のとおりです。ワイルドカードパターンを満たすすべてのファイルまたはディレクトリを rmの引数として配置します。 。したがって、理論的には、 rmに対する引数の数に制限はありません。 コマンド。
多数のファイルの削除:「引数リストが長すぎます」エラー
理論的には「rm ’引数の数に制限はありません。1つのコマンドで処理できる引数の最大数には事前定義された制限があります。
これはLinuxシステムで定義されている制限であり、システムのスタックサイズに基づいています。したがって、ワイルドカードパターンで数万のファイルまたはディレクトリが引数として配置されると、プログラムは次のエラーをスローします。「引数リストが長すぎます 「。
約2.5ラックを含むフォルダの例を見てみましょう ( 250K )ファイル。
$ ls -l | wc -l $ ls | head

ワイルドカードを使って削除してみましょう。
$ rm file*

したがって、前述のエラーが発生します。このエラーを解決する方法を見てみましょう。
解決策:「-exec」引数を指定してFindコマンドを使用し、数千のファイルを削除します
findコマンドは基本的に、ファイル名パターン、ファイル拡張子などのさまざまなパラメータに基づいてディレクトリ内のファイルを検索します。
次に、'-exec'
を利用します ‘find‘のパラメータ これにより、 findの出力に対して任意のコマンドを実行できるようになります 。
$ find . -maxdepth 1 -name "<filename_pattern>" -exec rm -r {} \;
ここで、最初の引数'.'
(現在のディレクトリ)は、ファイルを見つけるディレクトリです。他のディレクトリのファイルを削除する場合は、ここでそのディレクトリへのパスを指定する必要があります。
引数'-maxdepth 1'
現在のディレクトリ内のファイルとディレクトリのみを考慮します。この深さを指定せずに、検索コマンド すべてのサブディレクトリを不必要に調べます。
引数"-name"
文字列パターンを持つファイルとディレクトリを検索するために使用されます。 「filename_pattern ’は文字列パターンを指定します。次に、‘rm -r‘
を指定します 引数の後のコマンド'-exec'
。
角かっこ'{ }'
findの出力から使用される引数のプレースホルダーです。
$ find . -maxdepth 1 -name "file*" -exec rm -r {} \;

ご覧のとおり、すべてのファイルが削除されています。すでに'-r'
を渡しているので、同じコマンドを使用してディレクトリを一括で削除できます。 引数。
結論
この記事では、コマンドrmコマンドについて学びました。 問題の「引数リストが長すぎる」 ’は‘ rm’を使用して処理できます 「検索」と組み合わせる ‘コマンド。
フィードバックや質問がある場合は、下のコメントでお知らせください!