2010-03-12 24 views
8

我試圖使用shell腳本獲取目錄的內容。使用shell腳本讀取目錄的內容

我的腳本是:

for entry in `ls`; do 
    echo $entry 
done 

然而,我的當前目錄包含在其名稱中的空格許多文件。在這種情況下,該腳本失敗。

在shell腳本中循環目錄內容的正確方法是什麼? PS:我使用bash。

+0

非常相關的問題:http://stackoverflow.com/questions/2437452 – jrharshath 2010-03-13 06:11:59

回答

12
for entry in * 
do 
    echo "$entry" 
done 
+0

+1是正確的,比我快! :-P – Buggabill 2010-03-12 19:53:07

+0

也許你應該使用'進入*。*'? – 2010-03-12 19:53:27

+0

@Jonathan:如果你需要匹配以'。'開頭的文件,那麼你最好在twiddling'dotglob'選項。 – 2010-03-12 19:56:14

3

在for循環中不使用ls解析目錄內容。你會遇到空白問題。使用外殼擴展代替

for file in * 
    do 
     if [ -f "$file" ];then 
     echo "$file" 
     fi 
    done 
+0

更新了問題.. – jrharshath 2010-03-13 05:36:04

+0

這是bash語法。試試看看。記住變量的雙引號。這將保留空格。只是不要在'for循環中使用'ls' – ghostdog74 2010-03-13 06:17:52