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 はメイン フォルダーです。そのフォルダー内で、毎回反復して最後のレベルに移動し、ファイルが存在するかどうか、そのディレクトリにあるかどうか、ファイルがディレクトリのコンテンツであるかどうかを確認する必要があります。ビルドする必要があります。そのパスとそのループから抜け出します。そして、変数の出力として上記のパスが必要です。

注:上記のディレクトリ構造では、各ディレクトリには他のサブディレクトリまたはファイルのいずれかを含めることができますが、両方を含めることはできません

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

必要なタスクを実行する、より優れたシェルスクリプトと簡潔なものを探しています..

更新:
ループの出力には、各反復で可変出力が必要です。1 番目のケース : /ex1/ 2 番目のケース : /ex1/ex2 3 番目のケース : ex1/ex2/ex3/ 4 番目のケース : /ex1/ex2/ex3/ 5 番目のケース : /ex1/ex3/sp4/sp3/

4

2 に答える 2

1

必要なディレクトリツリーを一度作成してみませんか。次に、を使用tarしてtarファイルを作成します。同じディレクトリ構造が必要なマシンは、tarファイルを解凍するだけです。

tarのマニュアルページはここから見つけることができます

于 2013-02-25T06:38:24.583 に答える
0

検索コマンド find で試しました。-type f -print; すべての種類のファイルを一覧表示する

探す 。-type d -print; すべてのタイプのディレクトリを一覧表示する

ファイルまたはディレクトリのリストを取得したら、DirName コマンドを使用してパスを取得します。

于 2013-02-27T05:54:52.487 に答える