我想以递归方式遍历当前目录中的所有子目录。
for i in *
这只遍历当前目录中的所有文件。如何使它如果它正在查看的文件是一个目录,进入该目录并递归查看该目录等等。
编辑:对不起应该更具体。我不能使用ls -R,因为我想在具有特定格式类型的树结构中显示它。我听说有命令可以做到这一点,但我必须使用循环。不能使用“发现”...答案 0 :(得分:0)
这是一个完成你需要的功能。在当前目录中使用recp 0
进行调用。
function recp
{
lvl=$(($1 + 1))
for f in *
do
j=0
while [[ $j -lt $lvl ]]
do
echo -n " "
j=$(($j+1))
done
echo $f
[[ -d $f ]] && ( cd $f && recp $lvl )
done
}
答案 1 :(得分:0)
我不太擅长bash脚本 但下面的例子遍历所有目录。 您可以用您喜欢的任何内容替换echo命令。 我确信这个例子的风格可以改进。
您是否也考虑过命令“树”?
祝你好运。#!/bin/bash
function recursiveList
{
if [ -d $1 ]
then
cd $1
for x in *
do
recursiveList $x
done
cd ..
else
echo $1
fi
}
for i in *
do
recursiveList $i
done