繁体   English   中英

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

[英]how to build a folder path in Unix shell scripting for any directory structure

我的应用程序具有类似的文件夹结构

/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 /

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

可以在这里找到tar的手册页

我尝试使用find命令find。 型f打印 列出所有文件类型

找 。 型d打印 列出所有目录类型

一旦我们获得文件或目录的列表,请使用DirName命令获取路径

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM