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

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

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

関連情報