Как найти файлы только в данном каталоге и игнорировать подкаталоги, используя bash - PullRequest
94 голосов
/ 10 октября 2011

Я смотрел на другие подобные вопросы, но не нашел такого, который позволил бы мне понять концепцию и сделать ее применимой к моей ситуации, исходя из моего ограниченного времени. Я просто запускаю команду find для поиска определенных файлов, но некоторые файлы в подкаталогах имеют то же имя, которое я хочу игнорировать. Спасибо за любую помощь. Ниже приведена команда, которую я использую:

интересующие меня файлы / шаблоны: / dev / abc-scanner, / dev / abc-cash ....

Команда:

find /dev/ -name 'abc-*'

Что возвращается:

/dev/abc-scanner
/dev/abc-cash
...
...
...
/dev/.udev/names/abc-scanner
/dev/.udev/names/abc-cash

Я хочу игнорировать последние файлы: /dev/.udev/...

Ответы [ 3 ]

152 голосов
/ 10 октября 2011

Если вы просто хотите ограничить поиск первым уровнем, который вы можете сделать:

 find /dev -maxdepth 1 -name 'abc-*'

... или, если вы особенно хотите исключить каталог .udev, вы можете сделать:

 find /dev -name '.udev' -prune -o -name 'abc-*' -print
9 голосов
/ 10 октября 2011

Есть ли какая-то конкретная причина, по которой вам нужно использовать find?Вы можете просто использовать ls, чтобы найти файлы, которые соответствуют шаблону в каталоге.

ls /dev/abc-*

Если вам нужно использовать find, вы можете использовать переключатель -maxdepth 1 только дляуказанный каталог.

3 голосов
/ 10 октября 2011

Это может делать то, что вы хотите:

find /dev \( ! -name /dev -prune \) -type f -print
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...