チルダ("〜")で始まらないフォルダを見つける方法

チルダ(

チルダ("〜")で始まるフォルダを除いて、フォルダを見つけようとします。以下を試しましたが、結果はありません。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 '*/~*'

後者はクリーンアップしていないため、ディレクトリを印刷しなくてもそのディレクトリを見ているので、効率が悪くなります。


¹ いくつかの違いがあります。つまり、最初の名前は、無効な文字を含むファイル名と一致しない可能性が*あります。*/~*

おすすめ記事