如何遍历目录的文件夹?

时间:2021-06-08 15:17:05

标签: linux shell

假设我在目录 a1 中,并且在 a1 中有另一个目录提交。在不使用 cd 提交的情况下,如何在保留在 a1 的同时打印提交中的文件夹名称?我可以执行以下操作吗?我正在编写 shell 脚本。

对于 */submissions 中的目录;做 ... 完成

3 个答案:

答案 0 :(得分:1)

使用 bourne 或 Posix shell,您可以:

for dir in ./submission/*
do
    if test -d $dir
    then ...
    fi
done

答案 1 :(得分:0)

假设这是您拥有的文件夹结构:

/a1/submissions/file1
/a1/submissions/file2
/a1/submissions/file3

您可以使用 ls [OPTIONS] [FILES] 命令获取文件和/或目录列表:

如果您为 ls 提供绝对路径(意味着从“根”级别开始),您可以列出该路径的内容,无论您当前在哪里(前提是您拥有访问权限)。

因此,要获取提交子文件夹中所有文件的列表,您可以运行 ls /a1/submissions ,它将输出如下内容:

file1
file2
file3

答案 2 :(得分:0)

您也可以使用递归来实现这一点。

#!/bin/sh

func () { # $1=directory
    for file in "$1"/*; do
        if [ -d "$file" ]; then
            func "$file" # Enter another recursion if "$file" is a folder.
        else
            echo "$file" # Print filename
        fi
    done
}

cd a1
func '.'
# Or this for absolute paths
# func "$(realpath .)"
相关问题