次のような複数の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