List only directories, including directories with spaces in their names?
本问题已经有最佳答案,请猛点这里访问。
我想列出一个目录中的所有目录。有些人的名字中有空格。目标目录中还有一些文件,我想忽略它们。
下面是
1 2 3 4 | drwxr-xr-x 5 me staff 160B 24 Sep 11:30 Wrecsam - Wrexham -rw-r--r-- 1 me staff 77M 24 Sep 11:31 Wrexham.csv drwxr-xr-x 5 me staff 160B 24 Sep 11:32 Wychavon -rw-r--r-- 1 me staff 84M 24 Sep 11:33 Wychavon.csv |
我只想迭代"wrecsam-wrexham"和"wychavon"目录。
这是我试过的。
1 2 3 | for d in"$(find data -maxdepth 1 -type d -print | sort -r)"; do echo $d done |
但这给了我这样的输出:
1 2 3 4 | Wychavon Wrecsam - Wrexham |
我想要这样的输出:
1 2 | Wychavon Wrecsam - Wrexham |
我能做什么?
因为分词,for循环没有做正确的事情。您可以使用glob,而不必在子shell中调用外部命令:
1 2 3 4 | shopt -s nullglob # make glob expand to nothing if there are no matches for dir in data/*/; do echo dir="$dir" done |
相关:
- 循环访问bash中的目录
- 为什么不分析ls(1)的输出