非表示のディレクトリとサブディレクトリ(または非表示のディレクトリとサブディレクトリに属する)を除いて、現在のフォルダ内のすべてのディレクトリとサブディレクトリを検索したいと思います。以下は機能しません:
find . -type d -name "[!.]*"
空の隠しフォルダだけを避けることができると思ったからです。何かこんなに似合う
./.cache/totem
ベストアンサー1
ドットで始まるディレクトリを「隠し」として分類するとします。そのようなディレクトリを入力したくない場合は、を使用する必要があります-prune
。
find . -mindepth 1 -type d \( -name '.*' -prune -o -print \)
これは現在のディレクトリで始まります(*
ここで指定できますが、ワイルドカードがドットファイル/ディレクトリを含むように設定されていない場合のみ - 例:bash
's dotglob
)。その後、ディレクトリにのみ一致し、それ.
自体には一致しません。括弧内の部分は、find
名前が一致すると、.*
その項目またはその子項目が考慮されなくなるように切り捨てられ、名前が印刷されることを示します。
(非POSIX)オプションがない場合は、-mindepth
この回避策を使用できます。確かにこれは私が提案した元の解決策よりも優れていますが、答えに両方を残しておきます。
find . -type d \( -name '.?*' -prune -o -print \)