Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 目录递归_Unix_Recursion_Directory - Fatal编程技术网

Unix 目录递归

Unix 目录递归,unix,recursion,directory,Unix,Recursion,Directory,如果需要递归遍历目录树,有两种方法: 建立路径名,路径名的长度随移动而增加,…/。。。等等 使用chdir在到达每个目录时逐步进入其中,因此您永远不会处理超过两个组件的路径名 第一种方法在我看来更为明显,并且可能对一些不好的事件更为鲁棒,比如在中途卸载某些东西。另一方面,查看GNUFind实用程序的代码,我注意到它使用了第二种方法。这有什么原因吗?第二种方法的优点是我没有想到的吗?我相信查找使用方法2,因为您可以边走边执行命令(使用exec选项)方法2可以轻松处理路径中的组件被重命名的情况 它还

如果需要递归遍历目录树,有两种方法:

  • 建立路径名,路径名的长度随移动而增加,…/。。。等等

  • 使用chdir在到达每个目录时逐步进入其中,因此您永远不会处理超过两个组件的路径名


  • 第一种方法在我看来更为明显,并且可能对一些不好的事件更为鲁棒,比如在中途卸载某些东西。另一方面,查看GNUFind实用程序的代码,我注意到它使用了第二种方法。这有什么原因吗?第二种方法的优点是我没有想到的吗?

    我相信
    查找
    使用方法2,因为您可以边走边执行命令(使用
    exec
    选项)

    方法2可以轻松处理路径中的组件被重命名的情况


    它还拒绝任何人在搜索目录时卸载目录;如果目录正在使用,内核将拒绝卸载该目录,这包括作为某个进程的cwd。

    Erm。。。事实上,现代实现可能会使用

    • 召唤
    ftw
    是文件树漫游的缩写


    另请参阅一个非常有用的资源:

    有趣!这在实践中的可移植性如何?取决于你的实践;它是源于BSD的API。它在linux上无处不在;索拉斯;AIX。。。我认为这是相当普遍的。我不知道潜在的差异,说Mac OS有它;但是声称新代码应该使用fts来代替?