プロが教えるわが家の防犯対策術!

お世話になります。
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
で指定できるのですが、上記を一度に指定するにはどうすればよいのでしょうか。()や[]|+等を使って色々やってみたのですが、上手くいきません。

お手数ですがご教授願えませんでしょうか。宜しくお願いします。

A 回答 (5件)

ちょっと違うかも知れないけど・


ls -1 ./{[1-9],[12][0-9]}.js
とか
    • good
    • 0
この回答へのお礼

お返事遅くなりました。(お礼内容を記入し送信したはずだったのですが、勘違いからか送信されてないみたいでした。)

今回、ご教授頂いた方法で、無事複数のファイルを指定する事が出来ました。

ワイルドカードと正規表現の違いに、一つ理解が深まりました。
有難うございます。

お礼日時:2006/07/03 19:53

訂正



ls -1|egrep '^[0-9]+'.js
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/07/07 21:09

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

    • good
    • 0

なんで、一度に指定しないといけないのですか?一度に指定することによって何をしようとしているのかを含めて質問した方が有意義な回答が得られると思いますよ。



シェルのワイルドカードは正規表現ではありません。だからピリオドに ¥ をつける必要もないですよ。 ()や+-など一切使えません。使えるのは、*と?と[]だけ。

$ 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)
でも良いとも居ますが。
    • good
    • 0
この回答へのお礼

この度はご教授頂きまして有難うございました。
>なんで、一度に指定しないといけないのですか?
これは、シェルスクリプトから自動で作成されるファイルを、その後シェルスクリプトで削除する際、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'
上記はせっかくご掲示頂いたのですが、求めている結果にはならず私の方では何も表示されませんでした。

この度は色々とご教授頂きまして有難うございます。とても勉強になりました。

お礼日時:2006/07/03 20:23

やりたいこととやっていることが食い違ってるんだけど,


{1..20}.js
じゃダメ?
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/07/03 20:25

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