Comments 25
За перевод спасибо.
Однако, например, для поиска файлов по всему диску все же удобнее пользоваться mlocate, на мой взгляд. find каждый раз начинает поиск сначала и долго пробегается по всем папкам, а locate хранит весь список в свой базе (правда, обновляет ее только раз-два в день). Поэтому когда делаешь find + grep, а потом осознаешь что надо бы еще пару раз применить grep чтобы сократить список - немного раздражает снова ждать полного пересканирования диска.
Вы можете принудительно вызывать обновление, после значительного обновления содержимого ФС:
sudo updatedb
на SSD ext4 обновление занимаем буквально секунды
А зачeм делать find и потом греп, если у первого есть достаточный набор фильтров, по имени файла в том числе. Мне в голову приходит только find с опцией -exec (ну или далее xargs), где грепом ищется что-то внутри файлов.
А для быстрого поиска на подмонтированных NFS поможет?
mv $(fzf) $(fzf) — для реально страдающих амнезиейУчитывая, что останется в .history — именно так всегда и будет: "что-то куда-то перемещено".
Для случаев, когда вы не помните точно, ни куда вы выполнили перемещение, ни что переместили, но понимаете, что это точно было сделано.
Кстати, а fzf ищет по .history или еще по какой-то своей базе? Есть же известная проблема с несколькими терминалами - в history по-умолчанию записывается история только последнего закрытого терминала. У меня постоянно открыто около 20 вкладок терминала, поэтому полагаться можно только на недавнюю историю.
Fzf не имеет своей БД/индекса поиска, это интерфейс навигации по набору строк, подаваемых ему на вход. По умолчанию например, если его вызывать без аргументов, он вызывает дочерним процессом find и обрабатывает его вывод. Локальную историю соответственно ему тоже можно отдать вызовом правильной утилиты ("fc -lI" в zsh например).
Разве это не решает проблему?:
shopt -s histappend
PROMPT_COMMAND='history -a'
а еще есть офигенная утилита для поиска ack. Искать всякие упоминания строчек конфига в исходниках удобно
Очень странные примеры откровенно говоря, скорее приводящие в ужас чем вызывающие желание подобный пакет установить.
"Выгода и ценность" после прочтения остались под большим вопросом. Классические инструменты как-то удобнее, и притом они есть везде.
если искать по строкам то и открывать файл лучше уж сразу на нужной строке:
rg -n . | fzf | awk -F: '{print "+"$2,$1}'
для редактора emacs:
emacs $(rg -n . | fzf | awk -F: '{print "+"$2,$1}')
для alias:
alias ff='emacs $(rg -n . | fzf | awk -F: '\''{print "+"$2,$1}'\'')'
FZF_DEFAULT_OPTS=--preview="head {} -n 100"
Добавление предпросмотра при поиске.
На серверах, скорее всего, будет только стандартный набор команд и никто не позволит ставить там всё описанное выше. Так зачем привыкать?
Затем, чтобы было удобно хотя бы локально. Мало кто ведь локально работает в голом vim версии 2008 года? Или в nano. А на серверах только они и будут, скорее всего.
А ещё далеко не всем нужно ходить на сервера, на которых нельзя ничего ставить. Кому-то можно устанавливать свой софт, а кому-то вообще все эти удалённые сервера нужны раз в тысячелетие.
Интересная штука. Надо всё же будет в работе потыкать. Спасибо за статью.
Да, отличная утиллита. Использую в личных скриптах для работы с авс.
Для амнезии бывает полезно при поиске имени еще и сам файл "просмотреть".
Поэтому в загашниках есть такой алиас:alias lll='ls -laHR | fzf -m --preview='''echo user={3} when={-4..-2}; cat {-1}''' --header-lines=1 | awk '''{print $9}''''
С множественным выбором табом
Итак, вы установили fzf. Что дальше?