如何在Linux或Unix上显示递归目录列表

时间:2020-01-09 10:39:45  来源:igfitidea点击:

如何在macOS Unix系统上看到递归目录列表?
在Linux中,如何获取递归目录列表?
简介如果您想接收列表,则所有目录和文件都将递归尝试以下命令。

什么是文件的递归列表?

递归意味着Linux或Unix命令可与目录的包含一起使用,并且如果目录包含子目录和文件,则该命令也可对这些文件(递归)起作用。
假设您具有以下目录结构:

tree dir1

从上面的输出中可以明显看出,运行tree dir1给出了dir1目录及其子目录和文件的列表。
基本目录为dir1。
然后,您拥有所有子目录。
所有所有子目录都有其他文件和目录(例如大目录),依此类推。
您可以使用各种Linux命令以递归方式遍历每个目录,直到到达目录树的末尾为止。
那时,Linux命令返回到树中的一个分支,如果有的话,它会对所有子目录执行相同的操作。

如何在Linux或Unix中获取递归目录列表

尝试以下任一命令:

  • ls -R:使用ls命令获取Linux上的递归目录列表
  • find/dir/-print:运行find命令以查看Linux中的递归目录列表
  • du -a .:执行du命令以查看Unix上的递归目录列表

让我们看一些示例,以获取Unix或Linux系统中的递归目录。

Linux递归目录列表命令

执行以下命令:

ls -R
ls -R /tmp/dir1

使用ls -R命令的Linux递归目录列表。

Unix递归目录列表命令

因为并非所有版本的Linux,macOS,* BSD和类Unix系统都为ls命令提供-R选项。
尝试使用find命令:

find . -print
find /tmp/dir1 -print
find /tmp/dir1/ -print -ls

使用find命令在Linux或Unix中列出递归目录

如何在目录中递归列出所有文件

我们的最后一个示例使用du命令,如下所示:

du -a .
du -a /tmp/dir1/

您还可以如下使用tree命令:

tree .
tree /tmp/dir1/

递归处理文件

可以在文件上递归运行命令。
语法为:

my-command-here $(find /dir/ -name 'pattern' -print)
rm -i $(find /home/theitroad/ -name '*.bak' -print)

当然,您可以使用find本身运行命令:

find /dir1/ -name 'pattern' -print -exec command ;
find /dir1/ -name 'pattern' -print -exec command {} ;
find /dir/2/foo/bar -name "*.pl" -exec rm -rivf {} \;
find /dir1/ -type f -name "*.doc" -exec rm -fiv {} \;
## find file recursively and delete them ##
find /dir1/ -name 'pattern' -print -delete