Я посмотрел на другие похожие вопросы, но не нашел ни одного, который позволил бы мне понять концепцию и применить ее к моей ситуации, исходя из моего ограниченного времени. Я просто запускаю команду 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 / ...
Ответы:
Если вы просто хотите ограничить поиск первым уровнем, вы можете:
... или если вы особенно хотите исключить
.udev
каталог, вы можете сделать:источник
xargs
вместо этого, например:find /dev -maxdepth 1 -name 'abc-*' | xargs ls -l
но если есть вероятность, что в именах будут пробелы, вы должны это сделатьfind /dev -maxdepth 1 -name 'abc-*' -print0 | xargs -0 ls -l
ls -l /dev/abc-*
for x in /dev/abc-*; do readlink -f $x; done
ls -l /dev/abc-* /dev/*/abc-* | fgrep -v /dev/.udev
... за исключением того, что, по крайней мере, мой Linux/dev/*/*
не включает файлы,/dev/.udev/*
поэтому вы можете опуститьfgrep -v
.Есть ли какая-то конкретная причина, по которой вам нужно использовать
find
? Вы можете просто использоватьls
для поиска файлов, соответствующих шаблону в каталоге.Если вам все же нужно использовать
find
, вы можете использовать-maxdepth 1
переключатель, чтобы применить его только к указанному каталогу.источник
-maxdepth 1
скорее имеете в виду , чем-maxdepth 0
ls
. Вы можете найти те же файлы сecho
илиwc
или тем, что у вас есть, потому что оболочка расширяет подстановочный знак за вас. Такfor file in /dev/abc-*; do something with each "$file"; done
может быть то, что на самом деле ищет OP.find
Например, в версии Solaris этого нет.ls
.for f in abc*; ...
это все, что тебе нужно.Это может делать то, что вы хотите:
источник
У меня не работает. Он ничего не возвращает. Если я просто сделаю ». он дает мне все файлы в каталоге ниже того, над которым я работаю.
Ничего не возвращайте с помощью '.' вместо этого я получаю список всех «больших» файлов в моем каталоге, а также каталог rootfiles /, где я храню старые.
Продолжение. Это работает.
Видимо
/dev
означает интересующий каталог . Но./
нужен не просто так.
. Необходимость в этом/
не была очевидна даже после того, как я понял, что/dev
означает более или менее.Я не мог ответить как комментарий, потому что у меня нет «репутации».
источник