Я хочу искать methyldopa в .tex файлах поиском Ubuntu. Я просто включал файлы в свою папку Dropbox, которая может путать средство поиска Ubuntu. Однако я вижу те файлы в Недавних файлах средства поиска. Я ищу также неудачно methyldopa .tex
но также и выполнение неудачно просто methyldopa
и ограничение Типа к Документам, Папкам и Другому.
Я работаю sudo updatedb
и все еще неудачные поиски.
Как можно искать .tex файлы в Ubuntu 14.04 LTS?
Используйте сценарий, который я называю haetex
для поиска в масштабе всей системы. Поместите сценарий в /usr/local/bin/
как всего haetex
с такими полномочиями/владельцами; который можно сделать sudo chmod 755 /usr/local/bin/haetex
-rwxr-xr-x 1 root root 932 Jun 21 17:16 haetex
Характеристики
find -L ... -exec fgrep -l ... 2>/dev/null
, потому что оно занимает большее место в системе, чем find -H ... -exec fgrep -l ...
, не давая ошибки о дефектных символьных ссылках fgrep
, соответствия здесь лучше, чем [1 110] /dev/null
необходимы во втором наборе команд, потому что мы используем find -L
, так как мы хотим включать все символьные ссылки и пойти их через и не исключить что-либо в поиске ссылки Выбора Файла haetex
#!/bin/bash
# $Id: haetex, v 0.01 2016/5/4 17:33:12 Masi $
# v 0.011 2016/7/1 08:28:11 Masi $ [location], show filename when one file, search symlinks by default
# v 0.012 2016/8/16 19:21:00 Masi $ fix for find: ‘/home/masi/LOREM’: Too many levels of symbolic links
# Search .tex files
#
# .vimrc
# http://vi.stackexchange.com/q/7782/2923
#
# http://unix.stackexchange.com/a/287344/16920
usage() {
# a function that prints an optional error message and some help.
# and then exits with exit code 1
[ -n "$*" ] && printf "%s\n" "$*" > /dev/stderr
cat <<__EOF__
Usage:
[111] [-h] [ -i ] [ location ] [ word(s) ] [ -x example_data ]
-i Ignore case
-x The example option, requires an argument.
-h This help message.
Detailed help message here
__EOF__
exit 1
}
case_option=''
case_example=''
while getopts "hix:" opt; do
case "$opt" in
h) usage ;;
i) case_option='-i' ;;
x) case_example="$OPTARG" ;;
*) usage ;;
esac
done
shift $((OPTIND-1))
# include symlinks
# http://unix.stackexchange.com/a/293147/16920
# http://unix.stackexchange.com/a/303694/16920
# http://unix.stackexchange.com/a/304027/16920
find -L "$1" -xtype f -name "*.tex" \
-exec fgrep -l $case_option "$2" {} + 2>/dev/null | vim -R -
# The /dev/null makes sure `fgrep` prints a filename even when it has only a single file to search.
# TODO +perm 0666 not working in Ubuntu 16.04; instead fix the origin of the permission denied alerts
#sudo gfind /Users/masi/Math/ -type d -exec chmod 0755 {} \;
#sudo gfind /Users/masi/Math/ -iname '*.docx' ! -readable -exec chmod 0644 {} \;
# TODO remove -l but make opening file only filename in Vim
# TODO less -s -M +Gg - Less as frontend with selection possibility? Maybe with GNU Screen
в визуальном режиме. Нажмите Enter
(=leader) + g
+ t
на визуальном режиме. Вывод: файлы на вкладках. Таким образом, Вы перенаправляете вывод к Vim. Ожидаемый $HOME/.vimrc
"" Mapleader is space now from \
let mapleader=" "
"" Quick tabs - Go to tab by number
noremap <leader>1 1gt
noremap <leader>2 2gt
noremap <leader>3 3gt
noremap <leader>4 4gt
noremap <leader>5 5gt
noremap <leader>6 6gt
noremap <leader>7 7gt
noremap <leader>8 8gt
noremap <leader>9 9gt
noremap <leader>0 :tablast<CR>
"" Go to last active tab
au TabLeave * let g:lasttab = tabpagenr()
nnoremap <C-Left> :tabprevious<CR>
nnoremap <C-Right> :tabnext<CR>
"" http://vi.stackexchange.com/a/7787/2923
function! OpenSelectionAsTabs() range
let tabnr = tabpagenr()
for line in range(a:firstline, a:lastline)
"" to allow whitespaces in names http://vi.stackexchange.com/a/7865/2923
execute "tabedit " . fnameescape(getline(line))
execute "tabp"
endfor
endfunction
nnoremap <leader>gf :'<,'>call OpenSelectionAsTabs()<CR>
vnoremap <leader>gf :call OpenSelectionAsTabs()<CR>
Нажимают Space
+ [1-9]
для просмотра вкладок в Vim.
Известные Ограничения: ни один
Системы: Ubuntu 14.04, Ubuntu 16.04, Debian 8.5...
Аппаратные средства: Asus Zenbook UX303UA
Для графического решения (и более мощное, когда это работает правильно---, который является большую часть времени) должен установить recoll
.
необходимо будет установить его , использование PPA---смотрит эти , скачивают инструкции (прокрутите вниз к части для систем Ubuntu).
установив это, выберите своего рода индексацию (я действительно взрываю ночной f или эту все еще неразрешенную проблему ---, который происходит, вероятно, из-за некоторой странной конфигурации в моей системе), у Вас есть очень мощный инструмент для нахождения файлов в системе (даже содержание файлов как электронная таблица ODS или сжатый орт архивов подобные вещи).
В Вашем случае просто называют интерфейс Recoll:
(я использовал "puente" в качестве критерия поиска, потому что у меня нет methyldopa вокруг;-))---поиск записан в recoll язык запросов. .
Я предлагаю использовать Recoll для индексируемого поиска с графическим интерфейсом и функциональностью предварительного просмотра! Это находится в официальных репозиториях, простых в использовании и очень мощных.
Хотя Вы ищете решение GUI, я хотел бы совместно использовать решение для командной строки, потому что я думаю, что это довольно удобно и просто в использовании:
grep -w methyldopa *.tex | cut -d":" -f1
если все файлы находятся в том же каталоге.find -name "*.tex" -exec grep -H -w methyldopa {} \; | cut -d":" -f1
в каталоге, где все су файлов хотят найти, находятся в подкаталогах.grep -rwl methyldopa | grep .tex
Все файлы, Вы хотите искать, находятся в том же каталоге.
Это - самый легкий сценарий. Можно просто использовать
grep -w methyldopa *.tex | cut -d":" -f1
найти все .tex
файлы, содержащие methyldopa
.
Объяснение:
Каталог и содержание файла:
file1.txt
file2.txt
file3.list
#file1.txt
foo
bar
foobar
#file2.txt
foo
foobar
1337
#file3.list
foo
bar
foobar
Теперь, можно использовать grep foo *
искать foo
во всех файлах. Это - waht, который Вы получите:
file1.txt:foo
file1.txt:foobar
file2.txt:foo
file2.txt:foobar
file3.list:foo
file3.list:foobar
Используя -w
опция, предотвратит открытие foobar
:
grep -w foo *
file1.txt:foo
file2.txt:foo
file3.list:foo
Если Вы хотите ограничить свой поиск файлами со специальным окончанием, можно сделать следующее:
grep -w foo *.txt
file1.txt:foo
file2.txt:foo
Наконец, что не менее важно, можно передать результаты по каналу к a cut
управляйте для извлечения только имен файлов (-d":"
устанавливает разделителя полей на :
, -f1
возвращает первое поле каждой строки):
grep -w foo *.txt | cut -d":" -f1
file1.txt
file2.txt
Ваши файлы находятся в различных каталогах. В этом случае необходимо использовать find
найти файлы сначала:
find -name "*.txt" -exec grep -H -w foo {} \; | cut -d":" -f1
Объяснение:
find -name "*.txt"
поиски файлов, заканчивающихся .txt
в Вашем текущем каталоге и всех подкаталогах. Можно использовать что-то как find ~/Documents/ -name "*.txt"
начинать искать в ~/Documents
.
-exec grep -H -w foo {} \;
поиски foo
в каждом файле, который был найден и возвращает что-то вроде этого ( -H
флаг удостоверяется, что имя файла печатается):
./testdir/file2.txt:foo
./testdir/file1.txt:foo
Как в первом случае, | cut -d":" -f1
отключает имена файлов от вывода.