untar shell script

1

eu tenho um diretório em que existem vários arquivos tar como

tweets10_1.tar
tweets10_2.tar
tweets10_8.tar

agora eu quero descompactar esses arquivos e mantê-los em uma estrutura de diretórios como

10_1
10_2
10_8

Eu fiz um script de shell

#!/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

isso está me dando erro :3: [: missing ] Por favor, diga qual é o problema

    
por Saurabh 08.12.2014 / 12:20

2 respostas

0
#!/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 
    
por 08.12.2014 / 13:14
2

O comando [ deve ser fechado usando ] com espaço principal :

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

Além disso, por favor, não faça

for x in 'ls'

Em vez disso, use:

for x in *

Ou melhor:

for x in tweets10_*.tar

e pule a verificação completamente.

Você também pode extrair a parte 10_x com mais facilidade:

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

Aqui, estou removendo os alfabetos e o . .

    
por 08.12.2014 / 12:39