Найти как обычные файлы и каталоги

9

Как я могу сказать (если я могу сказать!) Найти, чтобы найти файлы как каталога, так и типа файла?

find -type fd

Это как эвристический темный возраст здесь.

MageProspero
источник

Ответы:

12

Вот команда, которую вы можете использовать:

find -type f -or -type d
laebshade
источник
7
Или find -type f -o -type dдля POSIX-совместимой альтернативы.
manatwork
Эй, у меня возникли небольшие проблемы с этим, когда я запустил $ find. -type d -or -type f -and -iname "видение", оно не выполняет то, что я ожидаю, я что-то упускаю!
MageProspero
2
-a имеет приоритет над -o, используйте круглые скобки (но избегайте их для оболочки). Не нужно использовать нестандартные -or или -and.
Стефан Шазелас
если я попытаюсь найти. -type d или -type f -name 'abc' . I get an error.. find: пути должны предшествовать выражению: `.. Есть идеи почему?
alpha_989
1
@ alpha_989 -раньше не было or?
Матеуш Пиотровский
2

ТЛ: др

использование find . -name "*string*" -type f -o -name "*string*" -type d

объяснение

Команда -o полностью orопределяет аргументы после пути к файлу, чтобы find . -name "*string*" -type f -o -type dвычислитьfind . (-name "*string*" -type f) -o (-type d) . По этой причине вы должны указать

Большинство пользователей захотят что-то похожее

find . -name  "*string*" -type f -o -name "*string*" -type d

который вычисляется как

find . (-name  "*string*" -type f) -o (-name "*string*" -type d)

найти детали синтаксиса

-name "*string*"ищет имена, которые содержат строку stringгде-либо в них.

Улад Касач
источник
1

Если вы используете GNU find, то вам может подойти следующее решение:

find -type d,f

Смотрите man findдля более подробной информации:

Для поиска более одного типа одновременно вы можете предоставить комбинированный список букв типов, разделенных запятой ,(расширение GNU).

Матеуш Пиотровский
источник
2
Использование GNU findверсии 4.7.0. Кажется, он не поддерживает ,. Сообщение об ошибке говорит, чтоfind: Arguments to -type should contain only one letter.
alpha_989