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