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[@]}"