実行可能なパラメータ範囲を持つ10個以上のファイルをロードする方法は? [コピー]

実行可能なパラメータ範囲を持つ10個以上のファイルをロードする方法は? [コピー]

動作するコマンドライン表現は次のとおりです。

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最後はに含まれる名前と一致します。1099100

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個のパターンを使用します。

おすすめ記事