Використовуйте locate, grepабо findв командному рядку.
Відкрийте програми> Утиліти> Термінал і будь-яке використання:
sudo locate -0 '*.txt' | xargs -0 grep WORD 2>/dev/null
Замініть СЛОВ словом, яке ви хочете шукати. Це, безумовно, найшвидший метод.
Я рекомендую спочатку відтворити базу даних locate для підвищення точності:
sudo /usr/libexec/locate.updatedb
Зауважте, що в OS X locateбаза даних створюється користувачем nobody. Це означає, що файли, приховані nobodyне, індексуються. Ви можете змінювати /usr/libexec/locate.updatedbта коментувати (тобто префікс #) цей розділ:
if [ "$(id -u)" = "0" ]; then
rc=0
# 2013-03-08 jaume Correct mktemp
export FCODES=`mktemp --tmpdir updatedbXXXX`
chown nobody $FCODES
tmpdb=`su -fm nobody -c "$0"` || rc=1
if [ $rc = 0 ]; then
install -m 0444 -o nobody -g wheel $FCODES /var/db/locate.database
fi
rm $FCODES
exit $rc
fi
так що він індексується під користувачем root(це стосується OS X 10.8 (Mountain Lion), в інших версіях OS X locateможе індексувати файли по-різному).
sudo grep -R --exclude-dir '/Volumes/<OS volume>' --exclude-dir '/Volumes/MobileBackups' --exclude-dir '/.Spotlight*' --exclude-dir '/.MobileBackups' --exclude-dir '/.DocumentRevisions*' --include '*.txt' WORD / 2>/dev/null
Замініть WORD словом, яке ви хочете шукати, і <OS volume>назвою гучності вашої ОС. Використовувані grepваріанти:
-R: чи здійснює рекурсивний пошук у вказаному шляху, тобто в /. Якщо ви шукаєте резервну копію TimeCapsule, замініть /щось подібне /Volumes/TimeCapsule.
--exclude-dir: виключає вказані папки. Як бачите, я виключаю Spotlight, папку Versions та локальні папки TimeMachine. Якщо ви хочете шукати локальний диск лише під час встановлення вашої TimeCapsule, додайте --exclude-dir /Volumes/TimeCapsule.
--include '*.txt': вказує grepна пошук файлів, які відповідають *.txt.
Додатково:
2>/dev/null: надсилає помилки, щоб /dev/nullви їх не бачили.
sudo find / ! -path '/.Spotlight*' ! -path '/Volumes/<OS volume>/*' ! -path '/Volumes/MobileBackups/*' ! -path '/.MobileBackups/*' ! -path '/.DocumentRevisions*' -name *.txt -type f -exec grep -H WORD {} + 2>/dev/null
Знову замініть WORD словом, яке ви хочете шукати, і <OS volume>назвою гучності вашої ОС. Як і раніше, 2>/dev/nullнадсилає помилки, щоб /dev/nullви їх не бачили, а якщо шукаєте резервну копію TimeCapsule, замініть /щось подібне /Volumes/TimeCapsule.
Використовувані findваріанти:
! -path: виключити вказані шляхи. Якщо ви хочете шукати локальний диск лише під час встановлення вашої TimeCapsule, додайте ! -path /Volumes/TimeCapsule/*.
-name *.txt: пошук файлів з ім'ям * .txt. Як бачите, я виключаю Spotlight, папку Versions та локальні папки TimeMachine.
-type f: пошук лише у файлах, ігнорування символьних посилань, папок тощо.
grep -H WORD {}: grep-файл для WORD. -Hзмушує grepдрукувати ім'я файлу.
Вихід будь-якої з команд, наведених вище, виглядає так:
filename: matched line
Наприклад, під час пошуку "GNU":
/usr/local/share/doc/p7zip/DOCS/readme.txt:7-Zip is free software distributed under the GNU LGPL
/usr/local/share/doc/p7zip/DOCS/readme.txt:1) You can compile and use compiled files under GNU LGPL rules, since
/usr/local/share/doc/p7zip/DOCS/readme.txt: copying.txt - GNU LGPL license
/usr/local/share/doc/xz/history.txt: Alexandre Sauvé helped converting the build system to use GNU
Якщо ви хочете зробити пошук без урахування регістру, замініть grepз grep -iвище.
findне дотримується символічних посилань (хоча він буде проходити через інші томи, якщо не вказати-xваріант) ...