-regexを使用してファイルを検索するときにfindを使用してファイルパスを指定する方法

-regexを使用してファイルを検索するときにfindを使用してファイルパスを指定する方法

find正規表現を使用してディレクトリ内の特定のファイルを検索したいと思います。

もし私がするなら

cd dir
find -E . -type f -regex '^\..*[^~]'

正規表現に一致するディレクトリのファイルのリストを取得します。

しかし、もし私がそうするなら

find -E ~/dir -type f -regex '^\..*[^~]'

つまり

find -E /home/adam/dir -type f -regex '^\..*[^~]'

私は何の結果も得られません。find正規表現を使用するときに検索するディレクトリをどのように指定しますか?

findこれはMacのようにBSDです。

ベストアンサー1

引数は-regex見つかったフルパスと一致する必要があります。同様のコマンドはfind .同様のパスを探し./dir/subdir/somefile、同様のコマンドはfind ~/dir同様のパスを見つけます/home/adam/dir/subdir/somefile。したがって、正規表現は先頭に /home/adam一致する必要があります。

このコマンドは、find -E . -type f -regex '^\..*[^~]'改行文字を含まずで始まらない名前を探します~.パスは.で始まるので、.で始まる名前は常に一致します./

ドットファイルを探している場合は、ディレクトリプレフィックスを許可する必要があります。次のコマンドは、名前が次に終わらないドットファイルを表示します~

find -E /whatever -regex '(\n|.)*/\.[^/]*[^~]'

しかし、これを次のように表現する方が簡単です-name

find /whatever -name '.*[!~]'

おすすめ記事