トップレベルのデジタルディレクトリを除くすべてのアイテムを削除するにはどうすればよいですか?

トップレベルのデジタルディレクトリを除くすべてのアイテムを削除するにはどうすればよいですか?

/path/to/fooメタパターンに一致するサブディレクトリを除いて、ディレクトリの下のすべてのエントリを削除したいと思います。

/path/to/foo/<DIGITS>/

たとえば、次のものが元々次のような/path/to/foo場合:

/path/to/foo
├── 0/
│   ├── a
│   └── b
├── 232532/
├── 42
├── 73/
│   ├── d
│   └── e
├── 8xyz/
│   ├── i
│   └── j
├── _bar/
│   ├── x
│   ├── y
│   └── z
├── .baz/
│   ├── f
│   └── frobozz/
│       ├── g
│       └── h
└── quux/
    └── 123/

...終わりたい

/path/to/foo
├── 0/
│   ├── a
│   └── b
├── 232532/
└── 73/
    ├── d
    └── e

私はこれを行うことができますfind ... -delete- ベースの注文または適切なzshグローバルパターン(について)を探しています。rm -r私はLinuxを使用しています。

ベストアンサー1

そしてzsh

set -o extendedglob # best in ~/.zshrc
rm -rf /path/to/foo/^<->(D) /path/to/foo/<->(^-/)
  • ^somethingはい何かではない(似kshている!(something)
  • <->はからの<x-y>10進整数と一致しますが、境界を提供しません(したがって 'sに似たすべての10進数シーケンスと一致します)。xyksh+([0-9])
  • (D)隠しファイル(またはファイル)を含むDglob修飾子
  • (^-/)グローバル予選シンボリックリンクの確認後、ディレクトリタイプではないファイルのみ-ディレクトリへのシンボリックリンクも削除するには、このエントリを削除します。)

おすすめ記事