0

我的应用程序有一个文件夹结构,如

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

4

2 回答 2

1

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

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

于 2013-02-25T06:38:24.583 回答
0

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

寻找 。-type d -打印;列出所有类型的目录

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

于 2013-02-27T05:54:52.487 回答