Unix:检查文件是否为文件夹

Unix:检查文件是否为文件夹

因此我需要循环遍历目录树,目前我可以打印目录中的所有文件,但完成后我需要能够进入起始目录的子文件夹等等。我的程序首先打印文件和文件夹,但我需要检查每个文件和文件夹以确保它是一个目录,然后进入它。有人可以提供一些指导吗?

答案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 ...

相关内容