Как мне найти все скрытые файлы, которые находятся в скрытых папках, используя Терминал?

10

Мне нужно найти некоторые конфиги, спрятанные в некоторых скрытых папках, и не могу вспомнить, где они находятся, чтобы перейти к ним напрямую Cmd+ Shift+ G.

Я сделал sudo find -name Foo*(медленно), но ни один из возвращенных файлов не был в скрытых папках.

Какой самый простой способ поиска всех скрытых файлов?

Старый МакСтофер
источник
Примечание. Использование sudoне требуется, если вам не нужен поиск в каталогах, к которым у вас нет доступа. Поиск в скрытых каталогах не требует повышенных привилегий, если именно поэтому он используется в вашем примере.
Крис Пейдж

Ответы:

14

mdfindкажется, игнорирует много скрытых файлов. mdfind 'kMDItemFSInvisible==1&&kMDItemFSName==filename'список .DS_Storeфайлов, но не для примера .bash_history. Я не нашел способа поиска файлов в некоторых скрытых каталогах, таких как /private/etc/.

Во всяком случае, найти любой файл намного быстрее, чем find.

Find Any File - это программа для Mac OS X, которая позволяет вам искать файлы на ваших дисках.

  • В отличие от Spotlight, он не использует базу данных, а вместо этого использует операции быстрого поиска драйвера файловой системы, где это возможно. Это позволяет вам искать свойства файла, такие как имя, даты, размер и т. Д., Но не содержимое файла (для этого используйте Spotlight или EasyFind).
  • Найти любой файл может найти файлы, которые не находятся в Spotlight, например, те, которые находятся внутри пакетов и пакетов и внутри папок, которые обычно исключаются из поиска Spotlight.
  • Наконец, это довольно быстро. Поиск занимает всего несколько секунд на внутреннем жестком диске или SSD. Попробуйте сами!
LRI
источник
6

Предполагая, что под «скрытым файлом» вы подразумеваете файлы, имя которых начинается с точки или которые расположены где-то под каталогом, имя которого начинается с точки, а не другие формы невидимых файлов , следующая команда печатает имена всех скрытых файлов. Это медленно, так как он охватывает все имена файлов в вашей системе.

sudo find / -name '.*' \( -type d -exec find {} \; -prune -o -print \)

Объяснение:

  • -type d -exec find {} \; -pruneвыполняется findв каждом каталоге (чье имя совпадает .*) и пропускается по убыванию в этот каталог из-за -prune.
  • -type d … -o -printвызывает .*печать всех не-каталогов, которые соответствуют .

Если вы ищете файл с конкретным именем или шаблоном:

sudo find / -name 'Foo*' -path '*/.*'

*/.*Узор на всем пути сил соответствует находиться под скрытой директории.

Вы можете добавить -xdevпосле, /чтобы избежать обхода специальных файловых систем и съемных дисков.

Жиль "ТАК - перестань быть злым"
источник
Ах, спасибо. И похоже, что -x сейчас предпочтительнее, так как -xdev устарел.
Старый МакСтофер
4

Попробуйте locateкоманду. sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plistСначала вам придется подождать, пока не будет сгенерирована БД locate.

Джей Томпсон
источник
3
Это такая неприятность, что Spotlight не берет скрытые / (точечные) файлы, потому что mdfind значительно превосходит slocate.
Джейсон Салаз
2

EasyFind - отличное альтернативное приложение для выполнения работы. Это бесплатно и просто. Вы можете искать текст в файлах (даже невидимых). <= Это может быть более простой способ найти ваши файлы конфигурации.

Вы можете получить его в App Store https://itunes.apple.com/us/app/easyfind/id411673888?mt=12.

Отказ от ответственности: я не связан с разработчиком.

Нол
источник
Не работает на дисках в формате APFS.
Виктор Энгель