因此我需要循环遍历目录树,目前我可以打印目录中的所有文件,但完成后我需要能够进入起始目录的子文件夹等等。我的程序首先打印文件和文件夹,但我需要检查每个文件和文件夹以确保它是一个目录,然后进入它。有人可以提供一些指导吗?
答案1
help test
产量
测试:测试 [expr]
[...]
-d FILE 如果文件是目录则为真。
[...]
退出状态:如果 EXPR 计算结果为真,则返回成功;如果 EXPR 计算结果为假或给出了无效参数,则失败。
test
可以缩写为[
,因此你可以这样做
if [ -d "$file" ]; then
# do stuff
fi
答案2
test -d myFileOrFolder
但您所描述的看起来像是的行为find
。
答案3
从输入的评论到一些回复,我猜你想在每个目录中运行一些脚本。在这种情况下,一种可能的方法是使用find
以下exec
选项:
find ./ -type d -exec sh -c "cd {} && <your_script_with_absolute_path>" \;
例如,在当前目录中有一个脚本test.sh
,你想在当前目录的每个子目录中执行它,然后
find ./ -type d -exec sh -c "cd {} && `pwd`/test.sh" \;
该find
命令-type d
将要求查找./
作为第一个参数传递的路径中的所有目录。-exec
将为每个这样的发现执行命令,在本例中,sh -c
即创建一个 shell 并执行带引号的命令,{}
表示命令找到的参数find
。
希望这能有所帮助!
答案4
伪代码:
[ -d your_filename ] && it's a folder ...