如何在bash中遍历目录
我需要编写一个脚本,它将遍历用户输入的目录,然后我需要它来查找目录中的每个项目是链接、文件还是目录。我对bash非常陌生,我无法理解这一点。您可以在目录中循环这些条目,如下所示:如何在bash中遍历目录,bash,shell,scripting,Bash,Shell,Scripting,我需要编写一个脚本,它将遍历用户输入的目录,然后我需要它来查找目录中的每个项目是链接、文件还是目录。我对bash非常陌生,我无法理解这一点。您可以在目录中循环这些条目,如下所示: #!/bin/sh for f in *; do [ -f "$f" ] && echo "$f is a regular file." [ -d "$f" ] && echo "$f is a directory." [ -h "$f" ] && echo
#!/bin/sh
for f in *; do
[ -f "$f" ] && echo "$f is a regular file."
[ -d "$f" ] && echo "$f is a directory."
[ -h "$f" ] && echo "$f is a symbolic link."
done
有关更多可用测试,请参见人工测试
但要列出它们,我可能会使用find
实用程序:
find directory -maxdepth 1 -printf '%y %p\n'
或递归地:
find directory -printf '%y %p\n'
如果要在给定目录中迭代,可以使用
read -p "Enter folder name " dir
然后将目录迭代为@Wintermute
for f in $dir/*; do
...
done
你需要一个目录还是子目录?这是家庭作业吗
您可以使用for
循环浏览一组项目,包括目录中的项目:
for file in "$directory/"*
do
echo "File is '$file'"
done
现在,您可以使用stat
获取文件类型。您需要执行man stat
并阅读文档,因为此命令因计算机而异
例如,在我的上,我将执行stat-f%HT$文件
,它将报告这是一个常规文件
,目录
,还是链接
这会给你足够的信息让你行动起来。如果您刚刚开始编写Bash脚本,我强烈建议您阅读一本关于Bash编程的好书。阿诺德·罗宾斯结账
它假定对bashshell有一些了解。如果您真的不熟悉bashshell,请查看。这是对Bash的温和介绍,包括一些基本编程技术。for i in*;不要重复$i;完成