самый быстрый способ поиска текста в файле (не имени файла), включая корневой том [дубликат]

Вам нужен инструмент Devil's Pie (версия 1 и версия 2, обратите внимание, что они используют совершенно разные языки конфигурации). На этом сайте есть несколько примеров, например 1 2 3 4 .

Проблема с вашим сценарием уже была указана Джеффом Шаллером в комментарии: строка, извлекающая вывод из xwininfo , не подключается к строке, вызывающей ] wmctrl . Чтобы использовать вывод команды в сценарии, используйте замену команды .

windowid=$(xwininfo -name "xfce4-settings-manager" | awk '$1 == "xwininfo:" {printf $4}')
wmctrl -i -r "$windowid" -b add,maximized_vert,maximized_horz &

Я использовал промежуточную переменную, чтобы строка не становилась нечитабельно длинной, но вы можете сделать все это в строке:

wmctrl -i -r "$(xwininfo -name "xfce4-settings-manager" | awk '$1 == "xwininfo:" {printf $4}')" -b add,maximized_vert,maximized_horz &

Я также объединил вызовы grep и awk, здесь мне проще использовать один инструмент.

Вам не нужно использовать xwininfo , чтобы найти идентификатор окна: wmctrl может это сделать, просто передайте ему имя окна.

wmctrl -r "xfce4-settings-manager" -b add,maximized_vert,maximized_horz &

1
20.09.2018, 23:46
1 ответ

Не думаю, что можно найти более быстрый способ, чем рекурсивныйgrep:

grep -r foo /

Это будет искать в каждом файле в вашей файловой системе слово foo. Вы можете немного ускорить его, сказав, чтобы он совпадал только один раз для каждого файла с-m:

grep -rm 1 foo /

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

1
27.01.2020, 23:42

Теги

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