linux下查找命令

linux下查找命令

我的朋友告诉我,可以使用 -r 开关在目录和子目录中递归查找文件。请告诉我给定语句中的错误,它不起作用

find / -type f -r -name "abc.txt"

答案1

它不起作用的原因是因为 find 没有-r选项。虽然对于许多程序来说,该标志确实-r意味着“递归”,但并非所有程序都是如此,也不是find.的工作find是搜索文件和目录,您并不经常这样做希望它是递归的。

您可以使用该命令检查大多数程序的选项man。例如,man find。由于 find 的手册很大,您可能需要搜索它来查找-r选项:

$ man find | grep -w -- -r

-- 只是告诉 grep 停止读取选项,如果没有它,-r 将作为选项传递给 grep。此外,您可以在手册页中进行搜索,方法是点击/然后写下您要搜索的内容,然后输入。

该命令什么也不返回,将其与搜索以下手册的命令进行比较cp

$ man cp | grep -w -- -r
   -R, -r, --recursive

由于find总是递归的,所以它所具有的是相反的,一个允许您选择它应该下降到多少个子目录的标志:

   -maxdepth levels
          Descend at most levels (a non-negative integer) levels of direc‐
          tories below the command line arguments.  -maxdepth 0
           means only apply the tests and  actions  to  the  command  line
          arguments.

   -mindepth levels
          Do  not apply any tests or actions at levels less than levels (a
          non-negative integer).  -mindepth  1  means  process  all  files
          except the command line arguments.

因此,每当您对某个命令有疑问时,请阅读其man页面,因为您永远不知道特定选项可能会做什么。例如:

$ man sort | grep -w -- -r
   -r, --reverse
$ man mount | grep -w -- -r,
   -r, --read-only
$ man awk | grep -A 8 -w -- -r
  -r
  --re-interval
          Enable the use of interval  expressions  in  regular  expression
          matching (see Regular Expressions, below).  Interval expressions
          were not traditionally available in the AWK language.  The POSIX
          standard  added them, to make awk and egrep consistent with each
          other.  They are enabled by default, but this option remains for
          use with --traditional.
$ man sed | grep -w -- -r
   -r, --regexp-extended
$ man xterm | grep -w -- -r
   -r      This option indicates that reverse video should be simulated by
           swapping the foreground and background colors. 

你明白了。

答案2

find已经是递归的,你不需要-r

相关内容