web-dev-qa-db-ja.com

ディレクトリからすべてのファイルを削除する方法は?

一番近いのは

# rm /path/to/directory/*.*

しかし、拡張子のないファイルでは機能しません...

285
user784637

Linuxは拡張機能を使用しません。名前に拡張子を付けるかどうかを決定するのは、ファイルの作成者次第です。 Linuxは1バイト目を見て、どの種類のファイルを扱っているかを把握します。

ディレクトリ内のすべてを削除するには、次を使用します。

rm /path/to/directory/*

-rオプションを使用できます。例:

rm -r /path/to/directory/*

また、コンテンツを削除するディレクトリ内のサブディレクトリ(およびそのすべてのコンテンツ)も削除します。そうしないと、ディレクトリを削除していないことを通知するエラーが表示されます。

332
Rinzwind
  • フォルダーをすべてのコンテンツと共に削除するには(すべての内部フォルダーを含む):

    rm -rf /path/to/directory
    
  • すべてのフォルダーのコンテンツすべての内部フォルダーを含む)を削除し、フォルダー自体は削除しない場合:

    rm -rf /path/to/directory/*
    

    または

    rm -rf /path/to/directory/{*,.*}
    

    隠しファイル/ディレクトリも確実に削除したい場合。

  • フォルダー内からすべての「ファイル」を削除するには(not内部フォルダーの削除):

    rm -f /path/to/directory/{*,.*}
    


  • 警告:パスにスペースがある場合は、必ず引用符を使用してください。

    rm -rf /path/to the/directory/*
    

    2つの個別のrm -rf呼び出しに相当します。

    rm -rf /path/to
    rm -rf the/directory/*
    

    この問題を回避するには、'single-quotes'展開しないシェル変数)または"double-quotes"expands Shell variables):

    rm -rf "/path/to the/directory/"*
    


どこ:

  • rm-「remove」の略
  • -f-「force」の略で、たとえば、アーカイブを削除する場合に確認/プロンプトを表示したくない場合に役立ちます。
  • -r-「recursive」の略で、すべてのフォルダーを再帰的にたどってすべてを削除することを意味します。
168

ディレクトリ内のすべてのファイル(隠しファイルとサブディレクトリを含む)を削除するには、次を実行します。

rm -rf /path/to/directory/{*,.*}
43

/ path/to/directory内のファイルのみを削除する場合は、次のようにします。

find /path/to/directory -type f -print0| xargs -0 rm 

または

find /path/to/directory -type f -exec rm '{}' \;

findを使用してロードを実行できます。利点は、rmにパイプせずに見つかったものを一覧表示できるため、開始する前に削除されるものを確認できることです。

9

ディレクトリ内のすべてのファイルとディレクトリ(hiddenを含む)を削除するには、次を試してください。

  • フォルダを削除してから再作成します

    rm -rf dir_name && mkdir dir_name
    
  • findを使用します

    find dir_name -mindepth 1 -delete  
    

ここでは、-mindepth 1を指定して、ディレクトリdir_name自体を除外します。
次のリンクをご覧ください。
https://unix.stackexchange.com/questions/12593/how-to-remove-all-the-files-in-a-directory

7
zeekvfu

すべてのサブディレクトリとディレクトリ自体も削除する場合は、rm -rf /path/to/directoryを使用できます。ただし、returnキーを押す前に必ず行を再確認してください。rm -rfは多くのhavockを引き起こす可能性があります。スーパーユーザー権限を持っているときに、最初のスラッシュの後に誤ってスペースを挿入した場合...

6
Tobias Kienzler

自分で検索すると、この質問は常にGoogleのトップにあるため、

他の答えには、さまざまな問題があります。

  1. それらのいくつかには、...が含まれています。

  2. それらのいくつかは、隠しファイル(ドットで始まるファイル)を忘れます。

  3. ディレクトリ削除を許可するために、正しい(最も深い)順序で削除しません。

  4. それらは他の(マウントされた)ファイルシステムに降りますが、これはしばしば望ましくありません。

  5. 追加のパラメーターを使用して適切に拡張することは困難です(詳細は以下を参照)。

したがって、ディレクトリ内のすべてのファイルとフォルダーを再帰的に削除するには、次の操作を行います。

find "${DIR}" -xdev -mindepth 1 -printf "%d\t%y\t%p\0" | sort -z -r -n | cut -z -f3- | xargs -0 -r -- rm -d --

-xdevなどのように、マウントへの下降を防ぐために/proc引数を追加したことに注意してください。

-depthまたは-deleteではないのはなぜですか?

人々は絶えずこれに賛成しているにもかかわらず、これらの方法には欠点があります。サブディレクトリを-Pruneingすることを(より多くの問題を引き起こすことなく)許可するほど拡張可能ではないようです。この方法とは対照的に、挿入することができます

-not \( -path "${DIR}/subdir" -Prune \)

-mindepth引数の前に、subdirの内容が削除されないように除外します。

1
Mehrdad

ディレクトリにcdしてから、DOSの場合と同様にコマンドrm *.*を実行できます。

0
V K Mavani

現在のディレクトリを削除するには、たとえばrm -d ./*を使用できます

-dは、ディレクトリも削除するように指示します。

0
arviman