我有一个目录,其中有多个 tar 文件,例如
tweets10_1.tar
tweets10_2.tar
tweets10_8.tar
现在我想解压这些文件并将它们保存在如下目录结构中
10_1
10_2
10_8
我做了一个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
这给了我错误: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