如何在Unix shell脚本中为任何目录结构构建文件夹路径

时间:2013-02-25 06:34:27

标签: linux shell unix scripting

我的应用程序有一个像

这样的文件夹结构
/PNRPHD1/ex1/11.txt

/PNRPHD1/ex1/ex2/11.txt

/PNRPHD1/ex1/ex2/ex3/23.txt

/PNRPHD1/ex1/ex2/34.txt

/PNRPHD1/ex1/ex3/sp4/sp3/4334.txt,

但是 / PNRPHD1是主文件夹,在该文件夹中我需要每次迭代并转到最后一级并检查文件是否存在,在该目录中是否存在, 如果File是目录的内容,那么我需要构建该路径并从该循环中走出来。我应该将上面提到的路径作为变量的输出。

注意:在上面的目录结构中,每个目录都可以包含其他子目录或文件,它不会同时包含

任何人都可以建议我在IF循环中尝试这样做,但是这会得到太多的代码,我想用最少的代码实现

DIR_REG = /PNRPHD1;
    ls -p $DIR_REG | while read -r dir
    do
        echo "directory under is  -- " ${dir} >>${DEBUG_LOG_FILE}
        BUP="/cygdrive/d/psoft/${PSFT_SID}/${dir}";

        ls -p $BUP | while read -r dir1
        do 
            if [ -f "${BUP}/${dir1}" ]; then 
                mkdir -p "${BUP}backup"
                echo "level of directory  -- " ${BUP}/${dir1} >>${DEBUG_LOG_FILE}
            else
                echo "level of directory  -- " ${BUP}/${dir1} >>${DEBUG_LOG_FILE}
            fi

        done

    done

我正在寻找一个更好的shell脚本和简洁的脚本,它完成了所需的任务..

更新:
我期望我的循环的输出应该在每次迭代中都有一个变量输出。 第一案例:/ ex1 / 第二种情况:/ ex1 / ex2 第三种情况:ex1 / ex2 / ex3 / 第四种情况:/ ex1 / ex2 / ex3 / 第五种情况:/ ex1 / ex3 / sp4 / sp3 /

2 个答案:

答案 0 :(得分:1)

为什么不创建一次所需的目录树。然后使用tar创建tar文件。您需要相同目录结构的任何计算机只需解压缩tar文件。

可以在here

中找到tar的手册页

答案 1 :(得分:0)

我尝试使用find命令 找 。型f印刷; 列出所有类型的文件

找到。型d印刷; 列出所有类型的目录

获取文件或目录列表后,使用DirName命令获取路径