繁体   English   中英

递归遍历目录 - Linux

[英]Recursively iterate through directory - Linux

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

for i in *

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

编辑:抱歉应该更具体。 我不能使用 ls -R,因为我想以某种格式类型的树结构显示它。 我听说有可以执行此操作的命令,但我必须使用循环。 也不能使用“查找”...

这是一个可以完成您需要的功能。 在当前目录中使用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
}

我不太擅长 bash 脚本编写,但下面的示例遍历所有目录。 你可以用你喜欢的任何东西替换 echo 命令。 我相信这个例子的风格可以改进。

您还考虑过命令“tree”吗?

祝你好运。

#!/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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM