仅列出目录,包括名称中带有空格的目录?

时间:2018-10-14 18:11:47

标签: bash

我想列出目录中的所有目录。其中一些名称中有空格。目标目录中也有文件,我想忽略它们。

这是ls -lah data/的输出:

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”目录。

这是我尝试过的。

for d in "$(find data -maxdepth 1 -type d -print | sort -r)"; do
    echo $d
done

但这给了我这样的输出:

Wychavon
Wrecsam
-
Wrexham

我想要这样的输出:

Wychavon
Wrecsam - Wrexham

我该怎么办?

1 个答案:

答案 0 :(得分:2)

由于word splitting,您的for循环未正确执行操作。您可以使用glob,而不必在子shell中调用外部命令:

shopt -s nullglob # make glob expand to nothing if there are no matches
for dir in data/*/; do
  echo dir="$dir"
done

相关: