2

find を使用して、小文字で始まるディレクトリ内のすべてのファイルを検索したかったのです。find と組み合わせた単純な正規表現は、この問題を解決するはずです (ファイル名の空白を扱う必要はありません)。

だから私は試しfind . -regextype posix-egrep -regex '^.*/[a-z][^/]*$' -type fました。そして、それは、一致すべきではないと私が思う他のものの中で、戻ってきました./config/Config.scala.

したがって、正規表現が間違っていると想定し、egrep 自体を使用してテストしました: echo './config/Config.scala' | egrep '^.*/[a-z][^/]*$'. 一致はありませんでした。

find私が行方不明になっているのは何ですか?-regexファイル名ではなく相対ファイルパスで動作することは既に認識しています(これは嫌いですが、それは別の問題です)。検索バージョンは 4.4.2 です

4

1 に答える 1

4

この一連のコマンドで再現しようとしました:

mkdir testtmp
cd testtmp
mkdir config
touch config/Config.scala
find . -regextype posix-egrep -regex '^.*/[a-z][^/]*$' -type f

出力がありませんでした。Debian によってパッケージ化された 4.4.2 も見つかりました。

アップデート

これはロケールの問題であり、[a-z]私たちが知っている 26 個以上の小文字に一致するはずです。これを試して:

LC_ALL=C find . -regextype posix-egrep -regex '^.*/[a-z][^/]*$' -type f
于 2012-07-03T12:07:36.587 に答える