すべてのサブフォルダーとすべてのファイルを再帰的に削除する方法を知っています。ただし、この場合、サブフォルダーを保持する必要があります。基本的に、すべてを空にする必要があります。
ので、私は持っています
rootdir/
subA/
subB/
subC/
subN/
そして、subA
からsubN
までのすべてのファイルを削除しますが、subA
...subN
は削除しません。
このためのコンソールコマンドとは何ですか? rm
への切り替えだと思います
find
コマンドを使用して、通常のファイル(タイプf
)のみを再帰的に識別できます。
find rootdir -type f
それが期待する結果を示している場合、実際にそれらを削除する
find rootdir -type f -delete
注意:これは「ゴミ箱に移動する」のではなく、実際に削除するので、コマンドを実行する前に本当にやりたいことを100%確実にしてください。
Steeldriverの答えに基づいて、xargsを追加して、gvfs-trashを1回だけ呼び出すことができます。彼の例では、find
はfind
で見つかったすべてのファイルに対してgvfs-trash
を1回呼び出します。多数のファイルがある場合、これは遅くなる可能性があります。
find . -type f -print0 | xargs -0 gvfs-trash
rm
コマンドを使用してこれを行うこともできますが、これを繰り返し行う必要があります。
これで最初にcd
親ディレクトリにできます
cd /rootdir
その後、実行する必要があります
rm -rf ./folder/*
Folderを空にするフォルダーの名前(subAなど)に置き換えます。
すべてのフォルダーが空になるまでこれを繰り返します。
-rf
は、空にするフォルダー内のすべてのフォルダーも削除することに注意してください。
-exec
で次のようにできます:find rootdir -type f -exec rm {} \;
(バックスラッシュは必須です)