Есть ли какой-нибудь способ предотвратить рекурсивное копание find в подкаталогах?
Вопрос
Когда я это делаю:
$ 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" в текущем каталоге.