쉘 스크립트 압축 풀기

쉘 스크립트 압축 풀기

다음과 같이 여러 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 

관련 정보