親フォルダーを削除せずにサブフォルダーを削除する


15

このタイプのdir構造の場合:

/config/filegroups/filegroupA/files/fileA1.txt
/config/filegroups/filegroupA/files/fileA2.txt
/config/filegroups/filegroupB/files/fileB1.txt
/config/filegroups/filegroupB/files/fileB2.txt
...

rm -rf /config/filesgroups親フォルダとすべてのサブフォルダを削除するために使用できることを知っています...

、、などのみを削除し/filegroupA、削除したく/filegroupBない/config/filegroups


13
rm -rf / config / filesgroups / *を使用するのに問題はありますか?
dsmsk80

3
それともrm -rf /config/filegroups/filegroups{A,B}
Dravスローン

@dsumskyデフォルトでbashは、「。」は含まれません。パス名展開のフォルダー。どちらが望まれるかもしれないし、望まれないかもしれない。マイセルフ私は何shopt -s dotglob.bashrcこれを修正します。誰かが便利だと思うかもしれないことに注意してください;)。
ミロスラフコシュカル

これはうまくいきましたか?もしそうなら、同じことをしたい他の人(私を好きにしてください)を助けるために、あなたは答えを受け入れてくれませんか?
Mawgはモニカ回復言う

rm -rf /*;)---真剣にそれをしないでください
ムハンマドウーマー

回答:


28
rm -rf /config/filegroups/*

ディレクトリ(およびディレクトリへのシンボリックリンク)のみを削除し、ファイルを/config/filegroupsそのまま残したい場合は、末尾のスラッシュを使用できます。

rm -rf /config/filegroups/*/

.かなり新しいbashがあると仮定して、aで始まる名前のディレクトリも削除する場合は、dotglobシェルオプションを使用する必要があります。

shopt -s dotglob
rm -rf /config/filegroups/*/
shopt -u dotglob

そして、してくださいではないということでしょう「/設定/ファイルグループ/ *」RM -rfためのない仕事
イリヤYevlampiev

5

これにより/config/filegroups、「隠し」ファイルとディレクトリ(名前がで始まる.)を含むすべてのファイルとディレクトリが削除されます。

find /config/filegroups -mindepth 1 -maxdepth 1 | xargs rm -rf

ファイル名またはディレクトリ名にスペースが含まれる場合、次のようにする必要があります。

find /config/filegroups -mindepth 1 -maxdepth 1 -print0 | xargs -0 rm -rf

ボーナス:最初に、次のように削除されるものを確認できます。

find /config/filegroups -mindepth 1 -maxdepth 1

特定のファイルまたはディレクトリを保持したい場合は、次のようにします。

find /config/filegroups -mindepth 1 -maxdepth 1 -not -name "keep"

find-deleteオプションを使用しない理由はありますか?
evilsoup

4
-delete空でないディレクトリの削除を拒否します。-maxdepthoverridesは-depth-delete空でないディレクトリを削除するために必要です。なし-maxdepth、それはまた、ディレクトリ内のファイルが一覧表示されますので、あなたが簡単にディレクトリを削除しようとしているかを確認することはできません。使用し-maxdepthないということは、のようなフィルターを簡単に使用できないことも意味します-name。さらに-delete、最初に内部のすべてのオブジェクトを削除することにより、ディレクトリを削除します。これは、大きくて深いツリーである場合、長時間かかる可能性があります。
レスマナ

4

findwith を使用する-execことをお勧めします。これにより、次のような呼び出しが行われます。

find /config/filegroups/ -maxdepth 1 -mindepth 1 -type d -exec rm -rf {} \;

-2

既にフォルダにいる場合は、単に入力できます rm -rf ./**

そう:

cd /config/filesgroups
rm -rf ./**

これは、ローカルパスからすべてのサブフォルダーを削除するグロブパターンです。

./ローカルフォルダを参照しています...そして**その下のすべてのフォルダについて


1
どのフォルダー、そしてなぜ `**` `
RalfFriedl

1
これはとまったく同じrm -rf ./*です。ただし-f、コマンドで使用していない場合は、「No such file or directory」に関する診断メッセージが表示される可能性があります(最上位ディレクトリは内容が処理される前に再帰的に削除されるため)によりますrm)。
クサラナナンダ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.