Centosでディレクトリのコンテンツを削除する方法


9

CentOSのフォルダーのすべてのコンテンツを削除する必要がありますが、フォルダー自体は削除しません。

たとえば、「MYFOLDER」という名前のフォルダがあり、FOLD_1、FOLD_2、FOLD_3、FOLD_4 ...などのサブフォルダといくつかのファイルが含まれています。これらのフォルダーとファイルをすべて削除する必要がありますが、コンテナーフォルダーMYFOLDERは削除しません。前のプロセスの結果を指示するには、このディレクトリが必要です。

rm -rf コマンドで試してみましたが、コンテナフォルダも削除されました。

回答:


11

代わりにフォルダの内容を削除してください。

rm -r MYFOLDER/*

1
これはMYFOLDER内のファイル/ディレクトリを非表示にしないことに注意してください
tylerl

1
@tylerl:shopt -s dotglob最初に設定した場合に実行されます。
jgoldschrafe

これには、各サブディレクトリへのy / nの降順を手動で承認する必要がありますが、これは時間の浪費です。正しいコマンドはそれらすべてを自動的に処理するので、50のプロンプトで行き詰まることはありません。
CodeMed、2015年

rm -R /path/to/myfolder/*すべてのファイルとサブフォルダーの削除を承認する過剰な要求を回避するための正しい構文です。首都に注意してくださいR
CodeMed、2015年

5

以下を使用できます。

rm -r MYFOLDER/{.[^.],.??*}

これにより、非表示のファイルとフォルダも削除されます。MYFOLDERディレクトリにファイルが多すぎる場合は、代わりに次を実行する必要があります。

ls MYFOLDER/{.[^.],.??*}|xargs rm -r

私は自分の内側に500K以上のファイルを持っているmeta/:私は代替xargsのを試してみたかったので、しかし、私はこれらのエラーメッセージを取得し、ディレクトリ ls: cannot access meta/.[^.]: No such file or directory ls: cannot access meta/.??*: No such file or directory rm: missing operand
アンドレスSK

1
bashシェルを使用していることを確認してください。シェルは、ファイルパターンの「ブレース拡張」と「正規表現」をサポートする必要があります。
Mircea Vutcovici

3

私の意見では、最も簡単な方法は、それ自体を含むディレクトリ全体を削除してから、フォルダを再作成することです。これが適切な解決策ではない状況(無人スクリプトやより複雑なパイプラインなど)がありますが、フォルダーを削除したくない理由を指定していません。

rm -rf foldername
mkdir foldername

おっとっと。指定しました(投稿を読み直しました)。それでも、削除および再作成は機能します。特に、次のようにコマンドをチェーンする場合

rm -rf foldername && mkdir foldername

または

rm -rf foldername; mkdir foldername

親フォルダにアクセス権がない場合や、気付かない特定の属性を保持したい場合があります。たとえば、root以外のユーザーとしてホームフォルダーを削除することはできませんが、その下にあるものはすべて削除できます。
Mircea Vutcovici、2011年

これは受け入れられる答えになるはずです。+1
CodeMed、2015年



0

私はこの代替案を強くお勧めします(名前にスペースが含まれるファイルも削除します):

find MYFOLDER/ -type f -print0 | xargs -0 rm -f
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.