-print
在命令中使用and-depth
参数时有什么区别find
,因为它们产生相同的结果:
/home/pkaramol/Desktop/testdir
$ find .
.
./testfile3.txt
./testfile1.txt
./testfile4.txt
./testdir1
./testfile2.txt
./testdir2
/home/pkaramol/Desktop/testdir
$ find . -depth
./testfile3.txt
./testfile1.txt
./testfile4.txt
./testdir1
./testfile2.txt
./testdir2
.
/home/pkaramol/Desktop/testdir
$ find . -depth -print
./testfile3.txt
./testfile1.txt
./testfile4.txt
./testdir1
./testfile2.txt
./testdir2
.
-print
将确保当前路径名打印到标准输出。一些标志关闭路径名的默认打印(-exec
例如)。-depth
将导致文件层次结构的深度优先遍历,因此首先处理没有子目录的目录中的路径名(自下而上而不是自上而下)。在您的示例中,当您在没有子目录的目录中工作时几乎没有区别,但请注意,当您使用时,在其他路径名之后.
报告(这是因为是要搜索的最顶层目录,所以它的路径名最后处理首先没有)。-depth
.
-depth
-depth
-depth
如果一个人正在删除目录,则使用它很有用,find
因为如果没有它,您会在尝试访问已删除的目录时出错。正如斯科特在下面的评论中指出的那样,在重命名目录时您肯定也需要,否则您可能无法在重命名目录结构的同时遍历目录结构。
-depth
该
-delete
标志默认打开-depth
。示例:删除当前目录下名称匹配的所有目录
*deleteme
(例如folder-deleteme
),并打印成功删除目录的路径:给定以下目录结构,
不执行上述
find
命令会导致-depth
因为
find
删除最顶层的folder-deleteme
目录(并打印其路径),然后尝试进入它以查找要删除的更多目录。还: