解压 shell 脚本

解压 shell 脚本

我有一个目录,其中有多个 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 

相关内容