ちょっとした問題があります。bash v.4 が使えないので、bash 3.2.57 を使い続けています。このフォームにスクリプトを入力していますlogs_logs_2017-04-{02..06}.tar.bz2
が、bash 3.2.57 は先頭のゼロによる中括弧の展開をサポートしていないため、スクリプトには次のように入力されlogs_logs_2017-04-2.tar.bz2 logs_logs_2017-04-3.tar.bz2 .....
、これらのファイル名は存在しません。
何か案が ?
ありがとう !
答え1
先頭のゼロを回ります:
somecmd logs-0{2..9}.tar.bz2 logs-{10..15}.tar.bz2
(この02..06
例では、 をこのように処理するのは簡単です。)
または以下を使用しますprintf
:
somecmd $(printf "logs-%02d.tar.gz " {2..15})
これは単語分割に依存しており、ファイル名にグロブ文字や空白が含まれていない場合にのみ機能します。
適切に実行すれば、これは簡単ですが、少し長くなります。
files=()
for x in {2..15} ; do
files+=( "$(printf "logs-%02d.tar.gz" $x)" )
done
somecmd "${files[@]}"