Shell,For循环到目录和子目录不能按预期工作

时间:2018-03-27 12:32:11

标签: linux bash shell for-loop recursion

当尝试执行一个简单的脚本来解析文件并将它们移动到另一个目录时,我在实现递归循环时遇到了问题。

#!/bin/bash
for directorio in $1; do #my thought process: start for loop goes into dir
    for file in $directorio; do #enter for loop for files
        fwe="${file%.*}" #file_without_extension    
        tar -czPf "$fwe.tar.bz2" "$(pwd)" && mv "$fwe.tar.bz2" /home/cunha/teste
    done
done

剧本似乎什么都不做...... 当脚本被调用时:./ script.sh / home / blablabla

我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:4)

您可以更好地按照以下选项。它将如何运作?首先,它将列出short_list.txt中的所有目录。在while循环中,它将读取每个目录名称并将其压缩到位置/home/cunha/teste

find $1 -type d -name "*" > short_list.txt
cdr=$(pwd)

while read line
do
   cd $line
   base=$(basename $PWD)
   cd ..
   tar -cf /home/cunha/teste/$base.tar.gz  $base
done < short_list.txt
cd $cdr
rm -rf short_list.txt
相关问题