我是shell脚本的新手所以我试图从谷歌中找到但是找不到任何解决方案或任何类似的代码来满足我的需求。 我只需要一个包含子文件夹和特定格式的文件的文件夹。 例如。我有一个主文件夹folderA和2个子文件夹A1和A2在这些文件夹中还有5个子文件夹
/folderA
/folderA1
/folderA11
/folderA12
/folderA2
/folderA21
/folderA22
/folderA23
finnaly我需要以这种格式打印这些文件夹:
1: folderA
11 : folderA1
111 : folderA11
112 : folderA12
12 : folderA2
121 : folderA21
122 : folderA22
123 : folderA23
我只需要一个简单的循环代码或类似的代码来在shell脚本中实现这一点。
谢谢您的任何想法...
答案 0 :(得分:1)
我希望你指的是原来的Ksh:
#!/bin/ksh
function recurse {
typeset PREFIX=$1 I=0
shift
for DIR; do
if [[ -d $DIR ]]; then
let ++I
echo "${PREFIX}${I} : ${DIR##*/}"
recurse " ${PREFIX}${I}" "$DIR/"*
fi
done
}
recurse '' "$@"
测试:
$ ksh script.sh FolderA
1 : folderA
11 : folderA1
111 : folderA11
112 : folderA12
12 : folderA2
121 : folderA21
122 : folderA22
123 : folderA23
答案 1 :(得分:0)
print() ( c=1; p=${2-1}; cd "$1"; echo "$p : $1";
for i in *; do test -d "$i" || continue;
print "$i" " $p$((c++))"; done;
)
将此调用为print .
以显示当前工作目录的所需输出,或print /p/a/t/h
显示/p/a/t/h
目录的输出。