Я выполняю Бионического Бобра и не могу найти какой-либо из своих файлов в стандарте (это все еще называют Единицей?) GUI. Если я перехожу к папке, это, кажется, может найти те файлы позже, но это бесполезно для файлов, из которых я уже не знаю местоположение. Это на самом деле отдельные проблемы для поиска от прикрепления с помощью META и ища использующий Ctrl+F от файлового браузера (это все еще называют Наутилусом?)
Я полагаю, что существуют более ранние версии этого вопроса, но я не нашел ничего, что, кажется, относится к моей установке все же.
В графической настольной среде можно попробовать Recoll, который является мощным инструментом, который может искать содержание файла, а также имена файлов.
При установке посмотрите man recoll
или учебное руководство через Интернет для получения дополнительной информации о нем.
Обычно recoll
команда запустит графический интерфейс пользователя для запросов базы данных Recoll.
На первом показе recoll создаст пользовательскую конфигурацию, которая может быть настроена прежде, чем запустить первую индексацию.
Ссылка: Recoll является настольным инструментом полнотекстового поиска
glocate
совершенно новый GUI для locate
сделанный @WinEunuuchs2Unix и описал в другом ответе здесь. Это является очень простым и также простым в использовании.
На текстовом экране или окне терминала можно использовать командные строки с find
и grep
.
find
очень мощный инструмент должен найти файлы. Примеры:
find / -iname "*autostart*" # to search everywhere
find ~ -iname "*autostart*" # to search in your home directory
Используйте поднятые полномочия, sudo find ...
если существуют каталоги, которые Нельзя искать как обычный пользователь. Посмотрите man find
или учебное руководство через Интернет для получения дополнительной информации о нем.
grep
очень мощный инструмент должен найти текстовые строки в файлах (поиск содержания файла). Примеры
grep 'alias' ~/.bashrc
Посмотрите man grep
или учебное руководство через Интернет для получения дополнительной информации о нем.
locate
быстрый инструмент должен найти файлы, когда он имеет обновленную базу данных. Посмотрите man locate
или учебное руководство через Интернет для получения дополнительной информации о нем.
Обновите базу данных для locate
с
sudo updatedb
и если это не включает вторичную файловую систему, которая смонтирована в /media
, можно отредактировать конфигурационный файл, чтобы заставить его включать его (или переместите точку монтирования в /mnt
, но это может вызвать проблемы с путями hardcoded),
cd /etc
sudo cp -p updatedb.conf updatedb.conf.bak
sudo nano updatedb.conf
Файлы индексируются для locate
команда, но обычно это обновляется каждый день так любой новый файл, который Вы создали, сегодня не покажет вплоть до завтра. Я обошел эту нехватку путем помещения sudo updatedb
как задание крона, которое работает каждые 15 минут (только требуется несколько секунд для выполнения).
locate
команда ведет себя, как будто подстановочные знаки используются:
$ time locate etc/profile
/etc/profile
/etc/profile.d
/etc/profile.d/appmenu-qt5.sh
/etc/profile.d/apps-bin-path.sh
/etc/profile.d/bash_completion.sh
/etc/profile.d/cedilla-portuguese.sh
/etc/profile.d/jdk.csh
/etc/profile.d/jdk.sh
/etc/profile.d/vte-2.91.sh
real 0m0.696s
user 0m0.671s
sys 0m0.024s
Я снабдил префиксом locate
команда с time
управляйте, таким образом, Вы видите, как ослепляюще быстро это делает поиски на индексируемых именах файлов и именах каталогов с подразумеваемыми подстановочными знаками.
locate
вывод довольно редок, таким образом, я создал псевдоним llocate
для форматирования вывода приятно (Как сделать, определяют местоположение вывода, похожи на 'll' или 'ls - la', но более хороший?):
$ time llocate etc/profile
ACCESS OWNER GROUP SIZE MODIFIED NAME (updatdb last ran: 2018-07-01 11:30:05)
-rw-r--r-- root root 575 Nov 12 2017 /etc/profile
drwxr-xr-x root root 4096 Jun 4 17:19 /etc/profile.d
-rw-r--r-- root root 40 Feb 16 2017 /etc/profile.d/appmenu-qt5.sh
-rw-r--r-- root root 580 Oct 18 2017 /etc/profile.d/apps-bin-path.sh
-rw-r--r-- root root 663 May 18 2016 /etc/profile.d/bash_completion.sh
-rw-r--r-- root root 1003 Dec 29 2015 /etc/profile.d/cedilla-portuguese.sh
-rwxr-xr-x root root 301 Feb 20 2013 /etc/profile.d/jdk.csh
-rwxr-xr-x root root 299 Feb 20 2013 /etc/profile.d/jdk.sh
-rw-r--r-- root root 1941 Mar 16 2016 /etc/profile.d/vte-2.91.sh
real 0m0.760s
user 0m0.754s
sys 0m0.020s
Заметьте, как заголовок определяет Вам прошлое время, когда файлы были индексированы. Если Вы не можете найти файл, Вы ищете и, был создан перед тем временем, просто выполнен sudo updatedb
.
time
команда используется снова, таким образом, Вы видите то использование llocate
незначительно медленнее, чем locate
если огромное количество результатов не возвращается.
locate
Фронтенд GUI glocate
Хотя locate
команда CLI, я создал переднюю сторону GUI для нее использование zenity
. Это - начальная буква "никакие оборки" фронтенд, который мог быть улучшен с помощью yad
вместо этого.
Этот экран появляется, когда Вы запускаете glocate
:
Можно ввести имена каталогов и имена файлов полностью или частично.
glocate
занимает приблизительно секунду для отображения результатов в большинстве случаев:
Вот сценарий удара, можно создать использование:
sudo -H gedit /usr/local/bin/glocate
Затем скопируйте и вставьте следующую строку:
#!/bin/bash
# NAME: glocate
# PATH: /usr/local/bin
# DESC: Provide zenity GUI front end to locate command
# DATE: Dec 24, 2018.
# NOTE: Written for: https://askubuntu.com/questions/1104069/search-is-useless-how-can-i-force-it-to-index-my-hard-drive-2018/1104112#1104112
Init () {
# Get date `sudo updatedb` was last run
LastRun=$(stat --printf=%y /var/lib/mlocate/mlocate.db | sed 's/\.[^\n]*//')
SearchMax=10 # Search for up to 10 filenames or directories at once
}
GetSearchNames () {
SearchNames=$(zenity \
--title "glocate - updatedb last run: $LastRun" \
--text '<span foreground="blue" font="14">Enter up to 10 search names</span>' \
--forms --width=800 --height=480 \
--add-entry="Search 1" --add-entry="Search 2" --add-entry="Search 3" \
--add-entry="Search 4" --add-entry="Search 5" --add-entry="Search 6" \
--add-entry="Search 7" --add-entry="Search 8" --add-entry="Search 9" \
--add-entry="Search 10" 2>/dev/null)
Action="$?" # Glitch: When ESC pressed or Cancel clicked result is 0?
# echo "Action: $Action" # Remove leading # to debug
# Zenity not returning array like yad would. Build array manually
SearchArr=() # Reset array
for (( i=1; i<=$SearchMax; ++i)) ; do
Field="$(echo "$SearchNames"| cut -d '|' -f $i)"
[[ $Field != "" ]] && SearchArr+=("$Field")
done
# Click OK without search names?
CharacterCount=$(wc -c <<< "${SearchNames[@]}")
# echo "CharacterCount: $CharacterCount" # Remove leading # to debug
# if [[ "$Action" == 0 && "$CharacterCount" == "$SearchMax" ]] ; then
if [[ "$CharacterCount" -le "$SearchMax" ]] ; then
zenity --error --title="glocate" \
--text="No search names entered. Program will end." \
2>/dev/null
Action=99
fi
return "$Action" # 0 = Proceed with search, anything else = quit.
}
DisplaySearch () {
Result=$(locate "${SearchArr[@]}" )
zenity \
--title "locate search results" \
--text '<span foreground="blue" font="14">Scroll to see more results</span>' \
--list --separator="$IFS" --width=800 --height=480 \
--hide-header --column "Directory and filenames" \
"${Result[@]}" 2>/dev/null
}
Main () {
Init
while GetSearchNames ; do DisplaySearch ; done
}
Main
Сохраните файл и выход gedit
.
Mark сценарий как исполняемое использование:
sudo chmod a+x /usr/local/bin/glocate
Если Вы хотите создать настольный ярлык, см.: простой способ создать настольный ярлык?
Для вызова сценария от терминала, просто используйте: glocate
.