2010-12-08 10 views
0

私はその中にたくさんの人物画像を持つディレクトリを持っています。残念ながら、画像が来るシステムは、ビジネスの他のシステムでは使用されていない人の画像の束のための独自のIDを持っています(つまり、ゲストは写真を持っていますが、実際に従業員/顧客のデータベースにはありません...画像サーバーのストレージに保存されます)。幸いなことに、8つ以上の整数の後ろにある拡張子のピクチャは不要です(私は.bmpと.jpgを見たことがありますが、他のものもあります)。私はls -lhとrm -fを入れ替え、他のシステムの写真を取り除くスクリプトを書く前に、以下のfindコマンドをテストとして試しました。私は正規表現を誤解していると推測していますが、これは通常そうであるようですが、私が探しているところでは、次のように動作するはずです。 \ d {8、}はすべて削除されているようには見えませんが、すべてがうまくいきますが、すべてが欲しいというわけではありません。私はここで何を見落としていますか?findコマンド-regexと-execで、正規表現ヘルプが必要

find /path/to/dir -regex '\/path\/to\/dir\/\d{8,}.*' -exec ls -lh {} \; 

ありがとうございます。

答えて

4

find正規表現の種類がシステム固有であるかどうかわかりません。私はLinuxの中でいくつかの種類の正規表現(POSIXはEmacsとは異なる)を持っているのを見てきました。 findのデフォルト正規表現はemacsのようです。私はfind-regextypeオプションを持っていることを見てきたので、あなたが望むものに似た何かを得ることができますposix-extendedを使用した:彼らは私が考える

find /path/to/dir -regextype posix-extended -regex '/path/to/dir/[0-9]{8,}.*' -exec ls -lh {} \; 

をしかし、あなたは(正規表現のこれらの種類に\dを持っていませんPerl型の正規表現からのみ得られます)、/にはバックスラッシュは必要ありません。とにかく、これらの作品。

+0

ありがとうございました。私は暖かい冬の間、暖炉によって正規表現について読む良い本を見つけるべきです。寒い時期に正規表現で本を読むよりも、暖かさを感じるには良い方法です。 – wilbbe01

+0

ハハ、それは本当です... :)それにPerlやEmacs-Lispを追加して、その後はラウンドパーフェクトになります:) –

関連する問題