Як шукати всі приховані файли, що знаходяться в прихованих папках, за допомогою терміналу?


10

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

Я робив sudo find -name Foo*(повільно), але жоден із повернених файлів не був у прихованих папках.

Який найпростіший спосіб пошуку всіх прихованих файлів?


Примітка. Використання не sudoє необхідним, якщо вам не потрібно шукати в каталогах, до яких ви не маєте доступу. Пошук у прихованих каталогах не потребує підвищених привілеїв, якщо саме тому він використовується у вашому прикладі.
Кріс Пейдж

Відповіді:


15

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. Спробуйте самі!

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спочатку і чекати, коли буде генеруватися БД локалізації.


3
Це така неприємність, що Spotlight не підбирає приховані / (точкові) файли, оскільки mdfind надзвичайно перевершує розміщення.
Джейсон Салаз

2

EasyFind - це відмінне альтернативне додаток, щоб виконати роботу. Це безкоштовно і просто. Ви можете шукати текст у файлах (навіть невидимих). <= Це може бути простішим способом пошуку ваших конфігураційних файлів.

Ви можете отримати його з App Store https://itunes.apple.com/us/app/easyfind/id411673888?mt=12

Відмова: Я не пов'язаний з розробником.


Не працює на накопичувачах у форматі APFS.
Віктор Енгель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.