動作するコマンドライン表現は次のとおりです。
program --files path_to_mydir/mydata_[0-9].csv
去りたかったけど、うまくいか[0-100]
なかった。
program --files path_to_mydir/mydata_[0-100].csv
[0-10]
また、別の質問があります。 wrtシェルスクリプトとbashスクリプトを何と呼びますか?
ありがとう
編集:似ていますが、この質問は尋ねませんでした。ls
ベストアンサー1
[...]
角かっこ式です。常に単一文字と一致するため、[0-100]
単一0
または1
(POSIX ロケールで)のみ一致するため、使用できません。
zsh
シェルでは<0-100>
数値範囲のグロービングパターンを使用できますが、次の状況では機能しませんbash
。
program --files path_to_mydir/mydata_<0-100>.csv
bash
あなたよりできる代わりに中かっこ拡張を使用してください。
program --files path_to_mydir/mydata_{0..100}.csv
ただし、このパターンとファイル名のグロービングパターンの違いを知っておく必要があります。上記の拡張と同様に、中括弧の拡張は文字列の生成、利用可能なファイル名とファイル名ワイルドカードパターンに関係なく既存の名前と一致。これは、中括弧拡張子が存在しないプログラムファイル名を提供できることを意味します。
あなたできる0から100までの数字を持つファイルを一致させるために使用されますが、[...]
各数字の長さに1つずつ3つのモードに設定する必要があります。
shopt -s nullglob
program --files \
path_to_mydir/mydata_[0-9].csv \
path_to_mydir/mydata_[1-9][0-9].csv \
path_to_mydir/mydata_[1][0][0].csv
最初のもの0
はに数字を含む名前と一致し、2番目はに含まれる名前と一致し、9
最後はに含まれる名前と一致します。10
99
100
0で埋められた整数を一致させますか?
shopt -s nullglob
program --files \
path_to_mydir/mydata_[0][0-9][0-9].csv \
path_to_mydir/mydata_[1][0][0].csv
nullglob
どの名前とも一致しないパターンが削除され、拡張されていないままになるように、このコードの両方の変形にシェルオプションを設定しました。
ユーザーfra-sanは、上記の中括弧拡張をシェルがワイルドカードパターンマッチングをトリガーするように強制することと組み合わせることができると述べました。
shopt -s nullglob
program --files path_to_mydir/[m]ydata_{0..100}.csv
[m]
m
文字列に(パターン一致文字)を含めると、シェルは中括弧拡張で生成された各文字列を別々のワイルドカードパターンとして扱います。を使用しているため、nullglob
既存の名前と一致しないパターンはパラメータリストから削除されます。
これは101個のglobbingパターンを作成して拡張しますが、globbingを使用するこの答えの他の方法は2個または3個のパターンを使用します。