Unix - 嵌套循环。一个循环解压然后另一个循环检查目录中的每个文件

时间:2010-10-12 10:57:27

标签: unix shell nested-loops

我正在尝试遍历一堆tar文件,然后将提取的文件移动到一个新文件夹中,检查它们并删除它们,然后再转到下一个tar。

代码如下:

for i in *
do
  tar -zxvf $i 
  mv *TTF* encoded
  cd encoded
  for j in *
  do
    echo $j
  done

  rm -f *TTF*
  cd ..
done

当它到达嵌套循环时,它会询问我是否要显示所有x种可能性。显然有些事情是错的。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

你是否在文本编辑器中写了这个,然后尝试将它粘贴到终端中?你是否使用制表符来缩进行?如果是这样,请尝试将制表符更改为空格,或者只将文件另存为shell脚本,然后运行它。

(Tab键调用完成,如果有许多匹配的匹配,则显示“display all x possibilities”消息。)

答案 1 :(得分:0)

在子shell中运行'cd'命令及其后续操作,这意味着您不必执行“cd ..”。此外,最好直接在子目录中提取每个tar文件。

for i in *.tar.gz
do
  mkdir encoded
  (
  cd encoded
  tar -zxvf ../$i 
  for j in *
  do
    echo $j
  done
  )
  rm -fr encoded
done

这只假设tar文件在文件的路径中不包含任何带有“..”的名称,这是非常罕见的。

答案 2 :(得分:0)

echo“输入no of terms”读取计数为$(seq 1 $ count)为t = expr $i - 1为j in $(seq $ t -1 0)do echo -n“”done j = expr $count + 1 x = expr $j - $i表示$(seq 1 $ x)中的k做echo -n“*”done echo“”