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