目录不被识别为目录

时间:2015-11-27 19:41:59

标签: bash

我想创建一个bash函数,列出给定目录中的所有目录(和文件)。

asciien = asciien & CStr(Asc(Mid(s, i, 1)))

如您所见,这是一个递归函数。当我用searchInRepo(){ file_list=`ls $1` #echo $file_list for aFile in $file_list; do echo "$aFile --" # case : directory if [ -d $aFile ] then echo "$aFile ***" cd $aFile searchInRepo $aFile cd .. # case : file elif [ -f $aFile ] then echo "$aFile is a regular file" fi done } (列出参数的文件)调用它时,它不会将目录识别为目录。当我只使用ls $1(不涉及任何参数)时,一切正常。

这里有什么建议吗? 干杯!

2 个答案:

答案 0 :(得分:1)

为什么在bash可以为你做的时候使用ls?这将检查以确保参数具有尾随/*,因此它将与裸目录名一起使用。

if [[ ! "$1" =~ /\*$ ]]
then
    if [[ ! "$1" =~ /$ ]]
    then
        searchpath="$1/*"
    else
        searchpath="$1*"
    fi
fi
echo "Searching $searchpath"

for f in $searchpath; do
    if [ -d "$f" ]
    then
        echo "Directory -> $f"
    else
        echo "File -> $f"
    fi
done

答案 1 :(得分:0)

为什么甚至使用for循环,find就是这样做的。

find . # List all files and directories recursively
find . -type f  # List only files
find . -maxdepth 1 # List all files and directories in current directory

如果您使用的是git,也可以使用git ls-files