2010-03-12 60 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