我希望使用条件for / while循环遍历目录
场景:路径为/home/ABCD/apple/ball/car/divider.txt
说我总是从/ home开始我的程序 我需要从家里迭代 - > ABCD - > apple - >球 - >汽车 - > 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 /作为输出
答案 0 :(得分:2)
除了多用途find
之外,您可能还需要查看tree
。它将以树状格式列出目录的内容。
$ tree -F /home/ABCD/
/home/ABCD/
`-- apple/
`-- ball/
`-- car/
`-- divider.txt
3 directories, 1 file
答案 1 :(得分: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是我在其中找到文件的文件夹
答案 2 :(得分:0)
find /home -type d
将为您提供/ home下的所有目录,而不是其他内容。将/ home替换为您选择的目录,您将获得该级别下的目录。
如果您的心脏一个接一个地检查每个文件,那么您正在寻找的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
-OR -
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