найти команду в 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

Связанный контент