次のような特定の文字で始まるすべてのファイルを見つけたいです。
find . -maxdepth 1 \( -name "^m*" -a ! -name "g$" \) -print
しかし、誰かが名前に特殊文字を含むファイルを作成した場合はどうなりますか?例えば
touch "
marst"
基準を満たしても検出されません。スペースで始まるファイルを見つけるには、コードをどのように変更する必要がありますか?
また、\( -name "^m*" -a ! -name "g$" \)
findのファイルが「marr」ではなく「./marr」なので、機能しません。これは何も見つからないことを意味します。単語の先頭に一致するようにコードをどのように変更できますか?
ベストアンサー1
-name
常に名前だけが一致します。つまり、パスと一致しません。みんな名前。その値は正規表現ではなくパターンなので、次のようにしてm
開始するファイル名を見つけることができます。
-name 'm*'
g
そして次に終わる名前
-name '*g'
正規表現を使用するには、-regex
オプションを参照してください。