Bash

如何僅遍歷 bash 中的目錄?

  • September 9, 2021

我有一個包含一些目錄和一些文件的文件夾(有些是隱藏的,以點開頭)。

for d in *; do
echo $d
done

將遍歷所有文件和目錄,但我只想遍歷目錄。我怎麼做?

您可以在末尾指定一個斜杠以僅匹配目錄:

for d in */ ; do
   echo "$d"
done

如果要排除符號連結,continue如果目前條目是連結,請使用循環測試。您需要從名稱中刪除尾部斜杠,以便-L能夠將其辨識為符號連結:

for d in */ ; do
   [ -L "${d%/}" ] && continue
   echo "$d"
done

您可以使用以下方法進行測試-d

for f in *; do
   if [ -d "$f" ]; then
       # $f is a directory
   fi
done

這是文件測試運算符之一。

引用自:https://unix.stackexchange.com/questions/86722