
チルダ("〜")で始まるフォルダを除いて、フォルダを見つけようとします。以下を試しましたが、結果はありません。find
チルダがワイルドカード文字として解釈されるようです。
find . -type d -not -path '*/\~*'
find . -type d -not -path '*/~*'
find . -type d -not -regex '.*/~.*'
find . -type d -not -regex '.*/\~.*'
私のバージョンのfindはfind (GNU findutils) 4.6.0
。
答え1
./path/to/~dir
フォルダをスキップしてスキップしたくない場合は、./path/to/~dir/subdir
他の人がすでに言ったように、次のことを実行できます。
find . ! -name '~*' -type d -print
欲しくないなら削減これらのフォルダに入るには(より多くのフォルダを見つけるには)、次の手順を実行します。
find . -name '~*' -prune -o -type d -print
これはfind
、名前で始まるディレクトリにルートを持つブランチを削除することを意味します~
。
これは基本的にあなたのものと機能的に同じでなければなりません。
find . -type d ! -path '*/~*'
後者はクリーンアップしていないため、ディレクトリを印刷しなくてもそのディレクトリを見ているので、効率が悪くなります。
¹ いくつかの違いがあります。つまり、最初の名前は、無効な文字を含むファイル名と一致しない可能性が*
あります。*/~*
答え2
-name
式がテストする内容を指定するには、このオプションを使用する必要があります。以下は私にとって効果的でした。
find . -type d ! -name '~*'
答え3
名前テストは大丈夫でしょう:
find . -type d ! -name '~*'