アプリ版:「スタンプのみでお礼する」機能のリリースについて

shellで16桁の数字が含まれるファイルをリストアップするという処理を作ろうとしています。
システムの全ファイルを対象にするので、短時間で処理を終えたいです。
アイデアだけでも良いのでお力添え宜しくお願い致します。
動作環境はUNIXです。

A 回答 (2件)

「含まれる」のがファイル内かファイル名かが不明ですが、ファイル名なら



find / -type f | grep \d{16}

で、ファイル内なら

find / -type f -exec grep -l \d{16} {} \;

とか。
#試してないので動作は保障しませんが
    • good
    • 1
この回答へのお礼

ありがとうございます。
おかげさまでできました。

find / -type f -exec grep -l '[0-9]\{16\}' '{}' \;

お礼日時:2010/07/08 19:37

ちなみに、grepの正規表現では、 \dに「数字」という特殊な意味はなく、{}も特殊文字ではない。

\はシェルで解釈されてしまうので'でくくって
grep '[0-9]\{16\}'
または
grep -E '[0-9]{16}'
または
egrep '[0-9]{16}'

が正解。

他に出てない条件として、
・きっちり16桁なのか、16桁以上あればいいのか

きっちり16桁なら、前後が数字でない(先頭/末尾か数字でない文字)ことも確認しないと
grep '\(^\|[^0-9]\)[0-9]\{16\}\($\|[^0-9]\)'
または
grep -E '(^|[^0-9])[0-9]{16}($|[^0-9])'
または
egrep '(^|[^0-9])[0-9]{16}($|[^0-9])'
    • good
    • 0
この回答へのお礼

ありがとうございます。
おかげさまでできました。

find / -type f -exec grep -l '[0-9]\{16\}' '{}' \;

お礼日時:2010/07/08 20:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!