ディレクトリパスにスペースがあるディレクトリを削除する

ディレクトリパスにスペースがあるディレクトリを削除する

私は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を使用します。-nameIndexContents

zshシェルまたはシェルオプションが設定されているシェルでは、bash次のglobstarものも使用できます。

rm -r ./**/Index/

または

rm -r ./**/Contents/Index/

これはrm -r、呼び出されるディレクトリのパス名のリストとともに呼び出されますIndex(ディレクトリパスのすべての部分が非表示にならず、名前でシンボリックリンクされたディレクトリを削除することができると仮定し、一致するパス名のリストが何千ものエントリではないと仮定しますIndex)。長い)。末尾のスラッシュはディレクトリだけに影響を受けます。

答え3

他のソースから解決策を得ましたが、うまくいきます。

find . -name directory* -print0 | xargs -0 rm -R

関連情報