Как найти файлы только в заданном каталоге и игнорировать подкаталоги с помощью bash
Я рассмотрел другие подобные вопросы, но не нашел того, что позволило бы мне понять концепцию и сделать ее применимой к моей ситуации на основе моего ограниченного времени. Я просто запускаю команду 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/...
Ответы
Ответ 1
Если вы просто хотите ограничить поиск на первом уровне, вы можете сделать:
find /dev -maxdepth 1 -name 'abc-*'
... или если вы особенно хотите исключить каталог .udev
, вы можете сделать:
find /dev -name '.udev' -prune -o -name 'abc-*' -print
Ответ 2
Есть ли какая-то особая причина, по которой вам нужно использовать find
? Вы можете просто использовать ls
для поиска файлов, соответствующих шаблону в каталоге.
ls /dev/abc-*
Если вам нужно использовать find
, вы можете использовать переключатель -maxdepth 1
только для применения к указанному каталогу.
Ответ 3
Это может сделать то, что вы хотите:
find /dev \( ! -name /dev -prune \) -type f -print