Как стать автором
Обновить

Комментарии 25

За перевод спасибо.

Однако, например, для поиска файлов по всему диску все же удобнее пользоваться mlocate, на мой взгляд. find каждый раз начинает поиск сначала и долго пробегается по всем папкам, а locate хранит весь список в свой базе (правда, обновляет ее только раз-два в день). Поэтому когда делаешь find + grep, а потом осознаешь что надо бы еще пару раз применить grep чтобы сократить список - немного раздражает снова ждать полного пересканирования диска.

Вы можете принудительно вызывать обновление, после значительного обновления содержимого ФС:

sudo updatedb

на SSD ext4 обновление занимаем буквально секунды

Именно так и делаю. Я уж не стал это писать.

А зачeм делать find и потом греп, если у первого есть достаточный набор фильтров, по имени файла в том числе. Мне в голову приходит только find с опцией -exec (ну или далее xargs), где грепом ищется что-то внутри файлов.

Ну вот мне быстрее вспомнить "locate | grep amqplib" чем все ключи у find. А потом надо повторить поиск, но добавив ещё условий, а find работает гораздо медленнее.

У find есть многопоточная (и более дружелюбная, как позиционирует автор) альтернатива – fd, можно найти в репозиториях многих дистрибутивов. От медленного диска, конечно, не спасёт, но работает порой ощутимо быстрее.

А для быстрого поиска на подмонтированных NFS поможет?

mv $(fzf) $(fzf) — для реально страдающих амнезией

Для случаев, когда вы не помните точно, ни куда вы выполнили перемещение, ни что переместили, но понимаете, что это точно было сделано.
Учитывая, что останется в .history — именно так всегда и будет: "что-то куда-то перемещено".

Кстати, а fzf ищет по .history или еще по какой-то своей базе? Есть же известная проблема с несколькими терминалами - в history по-умолчанию записывается история только последнего закрытого терминала. У меня постоянно открыто около 20 вкладок терминала, поэтому полагаться можно только на недавнюю историю.

Fzf не имеет своей БД/индекса поиска, это интерфейс навигации по набору строк, подаваемых ему на вход. По умолчанию например, если его вызывать без аргументов, он вызывает дочерним процессом find и обрабатывает его вывод. Локальную историю соответственно ему тоже можно отдать вызовом правильной утилиты ("fc -lI" в zsh например).

Известную проблему решает например специализированная утилита atuin

Да, но решает опять немного не так как хотелось бы. При нажатии стрелки вверх оно же покажет последнюю команду среди всех окон, а не только текущего?

Мне нужно чтобы и история не пропадала, но чтобы быстрый поиск использовал, в первую очередь, историю текущего окна.

а еще есть офигенная утилита для поиска ack. Искать всякие упоминания строчек конфига в исходниках удобно

ag, ещё интереснее

The command name is 33% shorter than ack, and all keys are on the home row!

Да, у автора ag есть чувство юмора)

Очень странные примеры откровенно говоря, скорее приводящие в ужас чем вызывающие желание подобный пакет установить.

"Выгода и ценность" после прочтения остались под большим вопросом. Классические инструменты как-то удобнее, и притом они есть везде.

если искать по строкам то и открывать файл лучше уж сразу на нужной строке:
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. А на серверах только они и будут, скорее всего.

А ещё далеко не всем нужно ходить на сервера, на которых нельзя ничего ставить. Кому-то можно устанавливать свой софт, а кому-то вообще все эти удалённые сервера нужны раз в тысячелетие.

Интересная штука. Надо всё же будет в работе потыкать. Спасибо за статью.

Почему всё же fzf, а не fzy?

Да, отличная утиллита. Использую в личных скриптах для работы с авс.

Для амнезии бывает полезно при поиске имени еще и сам файл "просмотреть".
Поэтому в загашниках есть такой алиас:
alias lll='ls -laHR | fzf -m --preview='''echo user={3} when={-4..-2}; cat {-1}''' --header-lines=1 | awk '''{print $9}''''
С множественным выбором табом

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории