如何从ls -R返回自定义外观

时间:2015-10-11 16:35:55

标签: bash recursion

我是学生学习bash,我需要获取子目录中的所有文件,目录和所有内容,并以这样的形式显示给终端中的用户:

NAME:    TYPE:
text     :file
doc      :directory

text是文件,doc是目录。我不需要将目录与子目录区分开来。到目前为止,我已经提出了这个代码:

for f in $(ls -R)
do
    if[ -d $f ]
    then
        echo "$f : Directory"
    fi
    if[ -f $f ]
    then
        echo "$f : File"
    fi
done | column -t

但是,此代码仅通过当前目录,而不通过子目录。关于如何使这项工作的任何想法?

1 个答案:

答案 0 :(得分:1)

改为使用find(1)

while read file
do
   ...
done < <(find ...)

或者使用bash 4.0 +:

shopt -s globstar
for file in **
do
   ...
done