2017-04-06 9 views
0

で終わらない検索ファイルは、私は、例えば持っている(、... * 0.0、* 0.123)正規表現:数字接尾

数字の接尾辞せずにすべてのファイルを返すコマンドを作るために3つのファイルが必要です。

gg.p qqq.449 rtr55 

私はこれらのみを検索したい:

./rtr55 
./gg.p 

私はgrepのを使用してそれらを見つけることを試みました。しかし、私は効果がない結果しか得られませんでした。

find -type f | grep -v '\.[0-9]+$' 

(このコマンドが返さ:)

./qqq.449 
./rtr55 
./gg.p 

をので、いくつかの正規表現形式エラーが存在する可能性があります。あなたはそれを修正する方法を知っていますか?

+0

[0-9] \ + $ '' –

答えて

1

+演算子は拡張正規表現に属します。

find -type f | grep -v '\.[0-9]\+$' 
find -type f | egrep -v '\.[0-9]+$' 
find -type f | grep -E -v '\.[0-9]+$' 
find -type f | grep -v '\.[0-9][0-9]*$' 
0

grepはなぜ使用しますか?

find -regex '.*\.[0-9][0-9]*' -prune -o -type f 

あなたの表現は十分に簡単です(またはあなたのfind-regexをサポートしていない)場合は、代わりに-regex-nameを使用することができますが、グロブワイルドカードは、ドットの後に数字の任意の量をキャプチャすることはできません。ここには1つまたは2つがあります:

find -name '*.[0-9]' -prune -o -name '*.[0-9][0-9]' -prune -o -type f 

これは純粋に効率的な質問ではありません。 grepは、ファイル名に改行が入っていれば、正しいことをしません。

+0

MacOSでの' find'の正規表現サポートは '[0-9] +'をサポートしていませんので、面倒な表現。私はおそらくプラス量子を使用することができますが、それは移植性がないことに注意してくださいLinuxで推測します。 – tripleee

+0

私はfind -regex '。* \。[0-9] [0-9] *' -prune -o -type fを試しましたが、数字の復帰には何の効果もありません。さらに、-regexオプションはおそらく標準に従っていません。 SunOSに貼り付けたとき、-regexオプションを認識できませんでした。 – 8ToThePowerOfMol

+0

-nameのみを使用するバージョンで更新されました。 – tripleee