私はmacOSを使用しています。私のパスには、次のような多くのディレクトリがあります。
./FirstName SecondName/A Multi Word Title/Contents/Index/files
Index
すべてのディレクトリとその内容を削除したいです。私は\
成功しなかったままスペース脱出を試みた。必要に応じて2回ほど意図していますが、ファイルを削除してからディレクトリを削除してみましょう。
答え1
本当にすべてを削除するには、シェルファイル名パターンを使用できます。
rm -i -v -r ./*/*/Contents/Index
rm
オプションの意味については、マニュアルページを確認してください。
答え2
Index
現在のディレクトリまたはその下に呼び出されたディレクトリを検索して削除するには、find
次のように使用できます。
find . -depth -name Index -type d -exec rm -r {} \;
これは、関心のある特定のディレクトリに対して深度優先検索を実行して、rm -r
各ディレクトリを順番に呼び出します。 (を使用して)深度優先検索を実行する必要があります-depth
。そうしないと、まだアクセスしていないディレクトリを削除してfind
エラーが発生する可能性があります。
ディレクトリがディレクトリのサブディレクトリになるようにするには、-path '*/Contents/Index'
代わりにtestを使用します。-name
Index
Contents
zsh
シェルまたはシェルオプションが設定されているシェルでは、bash
次のglobstar
ものも使用できます。
rm -r ./**/Index/
または
rm -r ./**/Contents/Index/
これはrm -r
、呼び出されるディレクトリのパス名のリストとともに呼び出されますIndex
(ディレクトリパスのすべての部分が非表示にならず、名前でシンボリックリンクされたディレクトリを削除することができると仮定し、一致するパス名のリストが何千ものエントリではないと仮定しますIndex
)。長い)。末尾のスラッシュはディレクトリだけに影響を受けます。
答え3
他のソースから解決策を得ましたが、うまくいきます。
find . -name directory* -print0 | xargs -0 rm -R