Как искать .tex файлы?

Я хочу искать methyldopa в .tex файлах поиском Ubuntu. Я просто включал файлы в свою папку Dropbox, которая может путать средство поиска Ubuntu. Однако я вижу те файлы в Недавних файлах средства поиска. Я ищу также неудачно methyldopa .tex но также и выполнение неудачно просто methyldopa и ограничение Типа к Документам, Папкам и Другому.

Я работаю sudo updatedb и все еще неудачные поиски.

Как можно искать .tex файлы в Ubuntu 14.04 LTS?

0
задан 30 June 2016 в 08:15

4 ответа

Используйте сценарий, который я называю 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

0
ответ дан 26 July 2019 в 11:49

Для графического решения (и более мощное, когда это работает правильно---, который является большую часть времени) должен установить recoll .

необходимо будет установить его , использование PPA---смотрит эти , скачивают инструкции (прокрутите вниз к части для систем Ubuntu).

установив это, выберите своего рода индексацию (я действительно взрываю ночной f или эту все еще неразрешенную проблему ---, который происходит, вероятно, из-за некоторой странной конфигурации в моей системе), у Вас есть очень мощный инструмент для нахождения файлов в системе (даже содержание файлов как электронная таблица ODS или сжатый орт архивов подобные вещи).

В Вашем случае просто называют интерфейс Recoll:

recoll interface

(я использовал "puente" в качестве критерия поиска, потому что у меня нет methyldopa вокруг;-))---поиск записан в recoll язык запросов. .

2
ответ дан 26 July 2019 в 11:49

Я предлагаю использовать Recoll для индексируемого поиска с графическим интерфейсом и функциональностью предварительного просмотра! Это находится в официальных репозиториях, простых в использовании и очень мощных.

0
ответ дан 26 July 2019 в 11:49

Хотя Вы ищете решение GUI, я хотел бы совместно использовать решение для командной строки, потому что я думаю, что это довольно удобно и просто в использовании:

tl; доктор:

  • Использовать grep -w methyldopa *.tex | cut -d":" -f1 если все файлы находятся в том же каталоге.
  • Использовать find -name "*.tex" -exec grep -H -w methyldopa {} \; | cut -d":" -f1 в каталоге, где все су файлов хотят найти, находятся в подкаталогах.
  • Править: Самый короткий путь (кредиты к @A.B.): 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 отключает имена файлов от вывода.

2
ответ дан 26 July 2019 в 11:49

Другие вопросы по тегам:

Похожие вопросы: