我的应用程序具有如下文件夹结构

/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是主文件夹,在该文件夹中,我需要每次迭代并转到最后一级,并检查文件是否存在,在该目录中是否存在,
如果文件是目录的内容,那么我需要构建该路径并退出该循环。我应该把上面提到的路径作为变量的输出。
注意:在上面的目录结构中,每个目录可以包含另一个子目录或文件,但不能同时包含
有人能建议我尝试在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/
第2例:ex1/ex2
第3例:ex1/ex2/ex3/
第4例:ex1/ex2/ex3/
第5例:ex1/ex3/sp4/sp3/

最佳答案

为什么不创建一次所需的目录树呢。然后使用tar创建tar文件。任何需要相同目录结构的机器只需解压缩tar文件。
可从here找到tar的手册页

关于linux - 如何在Unix Shell脚本中为任何目录结构构建文件夹路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15061344/

10-13 09:16
查看更多