Есть ли какой-нибудь способ предотвратить рекурсивное копание find в подкаталогах?

StackOverflow https://stackoverflow.com/questions/27077

  •  09-06-2019
  •  | 
  •  

Вопрос

Когда я это делаю:

$ find / 

Он выполняет поиск по всей системе.
Как мне предотвратить это?

(Этот вопрос исходит из "ответ- перейдем к другому вопросу.)

Это было полезно?

Решение

Добрый день,

Просто хотел подробнее остановиться на предложении Джона использовать -prune.Это не самый простой вариант поиска для использования, например, для простого поиска в текущем каталоге команда find выглядит следующим образом:

find . \( -type d ! -name . -prune \) -o \( <the bit you want to look for> \)

это остановит поиск от перехода к подкаталогам внутри этого каталога.

По сути, в нем говорится: "удалите все, что является каталогом, чье имя не является ".", т.е.текущий реж."

Команда find вычисляет слева направо для каждого элемента, найденного в текущем каталоге, поэтому после завершения первого элемента, т.е.сегмент обрезки, затем он будет продолжен с соответствующим элементом в вашем выражении second -o (ИЛИ d).

ХТХ.

твое здоровье, Роб

Другие советы

Рассмотреть:

-maxdepth n
             True if the depth of the current file into the tree is less than
             or equal to n.

-mindepth n
             True if the depth of the current file into the tree is greater
             than or equal to n.

Возможно, вам было бы лучше использовать подстановочные знаки.Например, если вы хотите найти все скрипты ksh в текущем каталоге:

$ ls *.ksh

Используйте -чернослив вариант.

Вы даже можете сделать

echo /specific/dir/*.jpg

поскольку это ваша оболочка, которая расширяет подстановочный знак.Ввод текста

ls *.jpg

это эквивалентно вводу текста

ls foo.jpg bar.jpg

приведены foo.jpg и bar.jpg все файлы, которые заканчиваются на ".jpg" в текущем каталоге.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top