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

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

このタイプのディレクトリ構造の場合:

/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

答え1

rm -rf /config/filegroups/*

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

rm -rf /config/filegroups/*/

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

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

答え2

私はfindwithを使用することを好みます-exec。これにより、次のように呼び出すことができます。

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

答え3

/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"

答え4

すでにフォルダにある場合は、次のように入力します。rm -rf ./**

だから:

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

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

./ローカルフォルダ...と**下のすべてのフォルダを参照してください。

関連情報