• ベストアンサー

shellでワイルドカードを使った複数ファイルの指定について

お世話になります。 Linuxのbash上でワイルドカードを使って複数の数字のみのファイルを複数一括指定する方法がわかりません。 (単独ではそれぞれ指定できるのですが・・・) 具体的には 1~9までの.jsファイルと 10~20までの.jsファイル。 を同時に指定したいのです。 単独では $ ls -1 ./[1-9]\.html ./1.js ./2.js ./3.js ./4.js ./5.js ./6.js ./7.js ./8.js ./9.js $ ls -1 ./[1-2]?\.html ./10.js ./11.js ./12.js で指定できるのですが、上記を一度に指定するにはどうすればよいのでしょうか。()や[]|+等を使って色々やってみたのですが、上手くいきません。 お手数ですがご教授願えませんでしょうか。宜しくお願いします。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

ちょっと違うかも知れないけど・ ls -1 ./{[1-9],[12][0-9]}.js とか

taku0
質問者

お礼

お返事遅くなりました。(お礼内容を記入し送信したはずだったのですが、勘違いからか送信されてないみたいでした。) 今回、ご教授頂いた方法で、無事複数のファイルを指定する事が出来ました。 ワイルドカードと正規表現の違いに、一つ理解が深まりました。 有難うございます。

その他の回答 (4)

回答No.5

訂正 ls -1|egrep '^[0-9]+'.js

taku0
質問者

お礼

egrepを使う方法もあるんですね。視野が広がります。 有難うございました。

回答No.4

ls -1|egrep '[0-9]+'.js

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.3

なんで、一度に指定しないといけないのですか?一度に指定することによって何をしようとしているのかを含めて質問した方が有意義な回答が得られると思いますよ。 シェルのワイルドカードは正規表現ではありません。だからピリオドに ¥ をつける必要もないですよ。 ()や+-など一切使えません。使えるのは、*と?と[]だけ。 $ ls -1 ./[1-2]?.js だと、1a.jsとか、1X.jsとか。1@.js も出てきてしまいます それと、なんで ./ をつけているのでしょうか?? $ ls -1 [1-9].js [1-2][0-9].js こうするしかないですが、2桁数字のhtmlが存在しない状況には対応できません。 大げさですが、いろいろな状況に対応できるのは、 ls -1 |sed -n '/^[1-9].js/p;/^[1-2][0-9].js/p' だとおもいます。 他の方の回答にある {を使った方式ですが、使用するシェルに依存しますので注意してください。 もちろんbashではOKですが、solarisなど昔ながらのbourne-shではサポートされていません。 ( ls -1 [1-9].js 2>&/dev/null ; ls -1 [1-2][0-9].js 2>/den/null) でも良いとも居ますが。

taku0
質問者

お礼

この度はご教授頂きまして有難うございました。 >なんで、一度に指定しないといけないのですか? これは、シェルスクリプトから自動で作成されるファイルを、その後シェルスクリプトで削除する際、2行で行うのではなく、1行で何とかできないかな。。と思ってトライした結果からです。 $ ls -1 ./[1-2]?.jsとしていたのは、数字から始まるファイルを指定するのを意図してやってみていたのです。 >それと、なんで ./ をつけているのでしょうか?? これは、ディレクトリを指定する際、上位の指定はls ..又はls ../であるのに対して現在いる場所の指定は.又は./であるという認識からです。当然、./と指定しなくてもそのままlsだけでも良いのは理解しております。またls aのようにディレクトリorファイル名を指定した場合、ファイル又はディレクトリをシェルが自動で判別してくれますが、予めファイルorディレクトリかを分かっている場合、ディレクトリの場合ですとls ./a/という風に木構造で指定する考えでいるからです。これはls a[Tab]で補完する際、ディレクトリには/が付く為、ディレクトリであるかないか、ディレクトリ構造を考える際の判断基準がどうしても/をつけて考えるようになっている為です。 >ls -1 |sed -n '/^[1-9].js/p;/^[1-2][0-9].js/p' 上記はせっかくご掲示頂いたのですが、求めている結果にはならず私の方では何も表示されませんでした。 この度は色々とご教授頂きまして有難うございます。とても勉強になりました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

やりたいこととやっていることが食い違ってるんだけど, {1..20}.js じゃダメ?

taku0
質問者

お礼

それでは駄目みたいです。 有難うございました。

関連するQ&A