我创建了一个如下所示的文件夹结构
mkdir -p test/f{1..4}/inside
跑步时ls -l test/*/
我得到了
test/f1/:
total 0
drwxr-xr-x 2 s ff 68 Jun 21 18:37 inside
test/f2/:
total 0
drwxr-xr-x 2 s ff 68 Jun 21 18:37 inside
test/f3/:
total 0
drwxr-xr-x 2 s ff 68 Jun 21 18:37 inside
test/f4/:
total 0
drwxr-xr-x 2 s ff 68 Jun 21 18:37 inside
如何获取test/f1/:
变量中的扩展路径(如),以便在循环中使用它来执行进一步的逻辑。
答案1
您不想循环遍历包含“多个项目”的变量(变量只能包含单个项目)。尤其是当您使用 bash 或其他支持数组的 shell 时。
您可以使用这些目录设置一个数组,如下所示:
array=( test/*/ )
然后循环遍历它们:
$ for item in "${array[@]}"; do printf '\n%s\n' "Current directory: $item"; ls -l "$item"; done
Current directory: test/f1/
total 0
drwxr-xr-x 2 jessebutryn staff 64 Jun 21 07:20 inside
Current directory: test/f2/
total 0
drwxr-xr-x 2 jessebutryn staff 64 Jun 21 07:20 inside
Current directory: test/f3/
total 0
drwxr-xr-x 2 jessebutryn staff 64 Jun 21 07:20 inside
Current directory: test/f4/
total 0
drwxr-xr-x 2 jessebutryn staff 64 Jun 21 07:20 inside
不过,您也可以直接循环它们,如下所示:
for item in test/*/; do
#something with "$item"
done
注意:我总是建议使用事物的完整路径而不是相对路径
for item in /path/to/test/*/; do
#something with "$item"
done
当你进行通配时这尤其安全