• ベストアンサー

shellで16桁の数字が含まれるファイルをリストアップするという処理

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

質問者が選んだベストアンサー

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

「含まれる」のがファイル内かファイル名かが不明ですが、ファイル名なら find / -type f | grep \d{16} で、ファイル内なら find / -type f -exec grep -l \d{16} {} \; とか。 #試してないので動作は保障しませんが

hamuwa_
質問者

お礼

ありがとうございます。 おかげさまでできました。 find / -type f -exec grep -l '[0-9]\{16\}' '{}' \;

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

ちなみに、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])'

hamuwa_
質問者

お礼

ありがとうございます。 おかげさまでできました。 find / -type f -exec grep -l '[0-9]\{16\}' '{}' \;

関連するQ&A

専門家に質問してみよう