根据man find
:
-ls
真的; 在标准输出上以ls -dils格式列出当前文件。块计数为 1K 块,除非设置了环境变量 POSIXLY_CORRECT,在这种情况下使用 512 字节块。有关如何处理文件名中的异常字符的信息,请参阅UNUSUAL FILENAMES部分。
我不明白这ls -dils
部分。
man ls
有“-d 列出目录本身,而不是它们的内容”。
考虑一个包含三个 .png 文件的文件夹:
$ ls
01-default.png 02-jungle.png 03-snow.png
$
我明白了
$ find . -type f -ls
12983011 28 -rw-rw-r-- 1 dkb dkb 25964 Mar 10 17:28 ./01-default.png
12982994 24 -rw-rw-r-- 1 dkb dkb 21857 Mar 10 17:28 ./03-snow.png
12983031 28 -rw-rw-r-- 1 dkb dkb 25964 Mar 10 17:28 ./02-jungle.png
$
但是,如果-ls
手段与 相同ls -dils
,我应该会看到类似的东西,ls -dils
但我得到的只是
$ ls -dils
13631944 4 drwxrwxr-x 2 dkb dkb 4096 Aug 30 21:22 .
$
然而,ls -ils
更像是我find
使用的-ls
:
$ ls -ils
total 80
12983011 28 -rw-rw-r-- 1 dkb dkb 25964 Mar 10 17:28 01-default.png
12983031 28 -rw-rw-r-- 1 dkb dkb 25964 Mar 10 17:28 02-jungle.png
12982994 24 -rw-rw-r-- 1 dkb dkb 21857 Mar 10 17:28 03-snow.png
$
所以我想知道man find
页面中是否有错字,是否ls -dils
真的应该出现ls ils
在我在问题顶部引用的部分。
对于它找到的每个文件,当您替换为该文件的路径时,带有
find
该操作的命令会以类似于该命令显示的格式显示-ls
该文件:path
这就是说
find
with-ls
类似于运行许多以开头的ls -dils
命令,每个找到一个文件。它与不带路径参数运行此实际命令不同:该
ls
命令在没有路径参数的情况下运行时表现出特殊行为:它的行为就像.
传递了单个路径参数一样。您一直在将find
命令-ls
的行为与ls
不带路径参数的命令的行为进行比较,但您应该将其行为与ls
带路径参数的行为进行比较。例如,试试这个:(因为
ls
它的输出排序,如下所述,更好的比较是与许多单独的命令,每个命令一个。)ls -dils ./filename
filename
对于那些特定的文件,无论有没有
-d
. 但是,find
可以找到目录。您可以通过创建一个目录并同时尝试和来查看ls
带有和不带有该选项的命令之间的区别。例如:-d
ls -dils ./*
ls -dils ./*
重申一个特别重要的点:因为
find
with-ls
类似于运行许多单独的命令ls -dils path
,它的行为与任何特定ls
命令不同。(它的行为确实有点类似于 a ,找到的所有路径都在哪里,但也不完全相似,因为该命令对其输出进行排序,因此结果通常会以不同的顺序出现。)ls -dils paths...
paths...
find
ls
另一种查看方式是运行一个
find
命令,其结果包括带有-ls
操作的目录,然后运行find
使用该操作的相应命令来运行具有不同选项的-exec
实际命令。ls
例如:在
-ls
不带 -运行的版本中,为、、和d
显示的第一个条目是第一个命令运行的输出,带有路径。要验证这一点,请尝试使用代替(交互操作,在每个命令之前提示您,从而明确哪些命令产生哪些输出)。a
b
c
d
ls
.
-ok
-exec