递归遍历目录 - Linux

时间:2014-03-24 02:57:35

标签: linux recursion

我想以递归方式遍历当前目录中的所有子目录。

for i in *

这只遍历当前目录中的所有文件。如何使它如果它正在查看的文件是一个目录,进入该目录并递归查看该目录等等。

编辑:对不起应该更具体。我不能使用ls -R,因为我想在具有特定格式类型的树结构中显示它。我听说有命令可以做到这一点,但我必须使用循环。不能使用“发现”...

2 个答案:

答案 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