1

条件付きfor/whileループを使用してディレクトリをトラバースしようとしています

シナリオ:パスは/home/ABCD/apple/ball/car/divider.txtです

私はいつも/homeからプログラムを開始するとします。家から繰り返す必要があります->ABCD->アップル->ボール->車->divider.txt

繰り返すたびに、取得したパスがディレクトリかファイルかを確認します。ファイルがループを終了し、返されたパスがディレクトリの場合はパスを返し、もう一度ループして続行します。

更新された質問

FILES="home"
for f in $FILES
do

    echo "Processing $f"  >> "I get ABCD as output
        if[-d $f]
  --> returns true, in my next loop, I should get the output as /home/ABCD/apple..
        else 
          Break;
        fi

done

forループを終了した後、出力として/ home / ABCD / apple / ball /car/が必要です。

4

3 に答える 3

2

多目的に加えて、findあなたも見てみたいと思うかもしれませんtreeディレクトリの内容をツリーのような形式で一覧表示します。

$ tree -F /home/ABCD/
/home/ABCD/
`-- apple/
    `-- ball/
        `-- car/
            `-- divider.txt

3 directories, 1 file
于 2013-02-26T07:41:26.613 に答える
1

これは私がそれを機能させるために実装した方法です

for names in $(find /tmp/files/ -type f); 
do
    echo " ${directoryName} -- Directory Name found after find command : names" 

    <== Do your Processing here  ==>

done

名前には、完全なフォルダレベルの各ファイルが含まれます

/ tmp / filesは、ファイルを検索するフォルダーです。

于 2013-02-28T10:11:56.087 に答える
0

find /home -type d

/homeの下にあるすべてのディレクトリだけが表示されます。/ homeを選択したディレクトリに置き換えると、そのレベルの下にディレクトリが作成されます。

すべてのファイルを1つずつチェックすることに心を向けている場合、探しているif..thenテスト条件は次のとおりです。

if [ -f $FILE ]
then
echo "this is a regular file"
else 
echo "this is not a regular file, but it might be a special file, a pipe etc."
fi

-また-

if [ -d $FILE ]
then
echo "this is a directory. Your search should go further"
else 
echo "this is a file and buck stops here"
fi
于 2013-02-26T06:58:06.357 に答える