web-dev-qa-db-ja.com

サブフォルダー内のすべてのファイルを削除するが、サブフォルダー自体は削除しない方法は?

すべてのサブフォルダーとすべてのファイルを再帰的に削除する方法を知っています。ただし、この場合、サブフォルダーを保持する必要があります。基本的に、すべてを空にする必要があります。

ので、私は持っています

rootdir/
        subA/           
        subB/
        subC/
        subN/

そして、subAからsubNまでのすべてのファイルを削除しますが、subA...subNは削除しません。

このためのコンソールコマンドとは何ですか? rmへの切り替えだと思います

5
ubuntico

findコマンドを使用して、通常のファイル(タイプf)のみを再帰的に識別できます。

find rootdir -type f

それが期待する結果を示している場合、実際にそれらを削除する

find rootdir -type f -delete

注意:これは「ゴミ箱に移動する」のではなく、実際に削除するので、コマンドを実行する前に本当にやりたいことを100%確実にしてください。

17
steeldriver

Steeldriverの答えに基づいて、xargsを追加して、gvfs-trashを1回だけ呼び出すことができます。彼の例では、findfindで見つかったすべてのファイルに対してgvfs-trashを1回呼び出します。多数のファイルがある場合、これは遅くなる可能性があります。

find . -type f -print0 | xargs -0 gvfs-trash
2
Unacoder

rmコマンドを使用してこれを行うこともできますが、これを繰り返し行う必要があります。

これで最初にcd親ディレクトリにできます

cd /rootdir

その後、実行する必要があります

rm -rf ./folder/*

Folderを空にするフォルダーの名前(subAなど)に置き換えます。

すべてのフォルダーが空になるまでこれを繰り返します。

-rfは、空にするフォルダー内のすべてのフォルダーも削除することに注意してください。

1
Rumesh

-execで次のようにできます:find rootdir -type f -exec rm {} \;(バックスラッシュは必須です)

0
Tolga Ozses