Есть ли способ предотвратить рекурсивный поиск find в подкаталогах? - PullRequest
3 голосов
/ 26 августа 2008

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

$ find / 

Поиск по всей системе.
Как мне это предотвратить?

(Этот вопрос происходит от " ответа " на другой вопрос.)

Ответы [ 5 ]

9 голосов
/ 26 августа 2008

Рассмотрим:

-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.
4 голосов
/ 26 августа 2008

G'day,

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

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

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

По сути, он говорит: «удалите все, что является каталогом, имя которого не является«. », Т.е. текущим каталогом."

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

НТН.

веселит, Rob

3 голосов
/ 26 августа 2008

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

$ ls *.ksh
0 голосов
/ 26 августа 2008

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

echo /specific/dir/*.jpg

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

ls *.jpg

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

ls foo.jpg bar.jpg

с учетом foo.jpg и bar.jpg - все файлы, оканчивающиеся на «.jpg» в текущем каталоге.

0 голосов
/ 26 августа 2008

Используйте опцию -prune .

...