シェルスクリプトの解凍

シェルスクリプトの解凍

次のような複数のtarファイルを含むディレクトリがあります。

tweets10_1.tar
tweets10_2.tar
tweets10_8.tar

ここでこのファイルを解凍し、以下のようなディレクトリ構造に保存したいと思います。

10_1
10_2
10_8

シェルスクリプトを作成しました。

#!/bin/bash
for string in `ls` ; do
  if [ $string == tweets10_*.tar*]; then
    length=${#string}
    folder=${string:6:$length-10}
    mkdir /mnt/filer01/round2/twitter/$folder
    tar -xvf $string -C /mnt/filer01/round2/twitter/$folder
  fi
done

エラーが発生します。:3: [: missing ] 何が問題なのか教えてください。

答え1

この[コマンドを使用する必要があります] 先行スペースがあります:

if [ $string == tweets10_*.tar* ]; then

また、お願いしないでください。

for x in `ls`

代わりに、以下を使用してください。

for x in *

またはより良い:

for x in tweets10_*.tar

検査を完全にスキップします。

部品を簡単に抽出することもできます10_x

$ a=tweets10_8.tar; echo ${a//[a-z.]/}
10_8

ここでは文字とを削除しました.

答え2

#!/bin/bash

DIR="/mnt/filer01/round2/twitter"

for file in tweets*.tar
do
    NEWDIR=`echo $file | tr -d [a-zA-Z.]`
    mkdir $DIR/$NEWDIR
    tar -xvf $file -C $DIR/$NEWDIR
done 

関連情報