假设我在目录 a1 中,并且在 a1 中有另一个目录提交。在不使用 cd 提交的情况下,如何在保留在 a1 的同时打印提交中的文件夹名称?我可以执行以下操作吗?我正在编写 shell 脚本。
对于 */submissions 中的目录;做 ... 完成
答案 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 .)"