查找并列出 -R 返回不同数量的文件

查找并列出 -R 返回不同数量的文件

我正在尝试创建一个数组变量,其中包含要在小脚本中使用的文件列表,需要文件的完整路径。环顾四周,我尝试了这样的事情:

find /path/ -t f | grep randomString

事实证明,这仅返回我需要的一些文件,因此我尝试使用wc -l前面的命令和 with ls -R /path/ | grep randomString,获得不同的行数(相差超过 100 行,所以我正在计算 ls - 中的目录) R 出)。我想知道为什么find没有返回预期的结果。有任何想法吗?

答案1

find列出目录树中的所有文件。ls -R实际上列出了更少的文件:它省略了点文件——你需要ls -AR将它们包括在内。

如果您没有找到所需的文件,有以下几种可能性:

  • 您在输出中错过了它们。使用搜索命令(例如find … | less,使用/less 中的键)。请记住, 的输出find未排序。
  • 这些文件实际上并不是您所认为的那样。如果您不确定大小写,请执行不区分大小写的搜索。
  • 您正在查找的文件实际上是符号链接。使用find -xtype f代替find -type f将符号链接按照它们指向的文件进行分类。
  • 这些文件位于目录的符号链接下。用于find -L遍历符号链接,但要小心:如果您有指向位于大型层次结构顶部的目录的符号链接,则这可能会搜索大量文件。

在任何情况下都不会ls -R找到不存在的文件find

ls -R您无法轻松比较和的输出中的行数find

  • ls -R省略点文件,find不会。
  • ls -R每个子目录(根目录除外)总共有三行,相比之下find -type f:目录条目、将该目录的列表与上一行分隔开的空行、以及目录名称后跟的标题行冒号。

答案2

当您执行 ls -R 时,您将获得列表中的目录名称作为输出。

相关内容