我想创建一个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
(不涉及任何参数)时,一切正常。
这里有什么建议吗? 干杯!
答案 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