次のzipファイルがあります。
PLP_633555_2015-03-04_01-12-01.zip
PLP_634562_2004-03-02_02-15-07_UBIC.zip
PLP_563462_2008-05-02_01-21-03_UBIC_STOC.zip
次の形式を使用して、各zipを適切なディレクトリに抽出する必要があります(デフォルトでは最初の30文字のみが必要です)。
PLP_633555_2015-03-04_01-12-01
PLP_634562_2004-03-02_02-15-07
PLP_563462_2008-05-02_01-21-03
以下は現在持っているコマンドです。これは機能しますが、2番目のzipファイル(PLP_634562_2004-03-02_02-15-07_UBIC.zip)に固有のものです。
for f in /PLP*.zip; do n=$(echo $f | cut -f 1-5 -d '_'); unzip -d $n $f;done
zipファイルの最初の30文字だけを読み、それに基づいてディレクトリを作成するように変更したいと思います。これにより、今後の新しいzipファイル命名形式が機能できるようになります。
コマンドのn変数部分をこれに変更してみました。
n=$(echo ${f:0:30});
しかし、それはうまくいきませんでした。私はLinuxバッシュを使用しています。
ベストアンサー1
sed
最初の30文字を取得できます。
sed 's|\(.\{30\}\).*|\1|'
代わりにループcut
で使用してください。for
この交換の履歴は、交換したsed
ユーザー間の一致です。 30個の単一文字を計算します(エスケープを含む)。\( \)
\1
{30}
\
.