普段なら教授さんやクラスメートにこんな質問をしたりしたが、土曜日だからみんな席がなかった。名前に連続する5桁の数字があるディレクトリ内のファイルを見つける必要があります。数字が昇順または降順である必要はありません。
答え1
ワイルドカード(またはワイルドカード)は、数値範囲を使用してこれを行うことができます。
ls -d /path/to/directory/*[0-9][0-9][0-9][0-9][0-9]*
これは、シェルに /path/to/directory で次に始まるファイル名を探すように指示します。
*
- 何でも(または何も)[0-9]
- 数字- (4桁以上)
*
——何でも(またはなし)で終わる
次に、対応するファイル名のリストを渡してls
リストします。
より広く、bashは文字も受け入れます。フレンドリーワイルドカードとして使用するため、[0-9] を含まない言語の数字がある場合は、次のようになります。
ls -d *[[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]]*
答え2
次の方法で実装しましたが、うまくいきました。
find . -maxdepth 1 -type f| sed "s/\.\///g"| awk -F "." '{print $1}'|sed '/^$/d'| awk '/[0-9]/{print $0}'| awk '{print $1,gsub("[0-9]",$1)}'| awk '$2 == 5 {print $1}'