我有以下srcipt應該告訴我目錄中的所有文件夾,但此刻的腳本列表中還在/ var/WWW僅列出文件夾文件而不是文件
declare -a dirs
i=1
for d in /var/www/*
do
dirs[i++]="${d%/}"
done
for((i=1;i<=${#dirs[@]};i++))
do
echo $i "${dirs[i]}"
done
文件shoult我改變什麼只列出陣列中的文件夾?
我有以下srcipt應該告訴我目錄中的所有文件夾,但此刻的腳本列表中還在/ var/WWW僅列出文件夾文件而不是文件
declare -a dirs
i=1
for d in /var/www/*
do
dirs[i++]="${d%/}"
done
for((i=1;i<=${#dirs[@]};i++))
do
echo $i "${dirs[i]}"
done
文件shoult我改變什麼只列出陣列中的文件夾?
你可以執行檢查它是否是一個目錄。你說:
[ -d "$d" ] && dirs[i++]="${d%/}"
,而不是說:
dirs[i++]="${d%/}"
報價help test
:
-d FILE True if file is a directory.
如何:
printf "%s\n" /var/www/*/
for i in *
do
[ -d ${i} ] && echo $i
done
相反的:
for d in /var/www/*
...做這樣的(注意尾隨/
):
for d in /var/www/*/
這將只匹配目錄。
只是'find/var/www -type d'怎麼辦? – fedorqui