find
может работатьgrep
:
find. -type f -name '*.out' \
-exec grep -q -e 'pattern' {} \; \
-execdir somescript.sh \;
Это позволит найти путь к любому обычному файлу, имя которого заканчивается на .out
. Для каждого найденного пути он будет использовать grep
, чтобы определить, соответствует ли шаблон какой-либо строке в файле. Если это так, -execdir
используется для выполнения somescript.sh
с каталогом найденного файла в качестве его рабочего каталога.
Обратите внимание, что somescript.sh
должен быть доступен где-то в $PATH
, чтобы это работало, и что сценарий будет выполняться один раз для каждого найденного файла, а не один раз для каждого каталога, содержащего .out
файл с соответствовать.
Чтобы выполнить сценарий только один раз в каждом каталоге, содержащем .out
файл с совпадением:
find. -type d -exec sh -c '
for dirpath do
if grep -q -e "pattern" "$dirpath"/*.out 2>/dev/null; then
( cd "$dirpath" && exec somescript.sh )
fi
done' sh {} +
Это использует find
для поиска каталогов, а не файлов. Для найденных пакетов каталогов выполняется короткий сценарий оболочки -строки. сценарий оболочки пытается сопоставить шаблон со всеми .out
файлами в каждом каталоге (, исключая скрытые, в то время как find
по-прежнему будет искать скрытые каталоги ), и если какой-либо файл совпадает, запускается подоболочка, в которой меняется рабочий каталог и выполняется скрипт somescript.sh
.
Поскольку вы используете xrdp
, вам необходимо создать сопоставление для протокола RDP.
Сначала вам нужно установить правильную раскладку клавиатуры с помощью setxbkmap
, как вы упомянули. Затем вы можете использоватьxrdp-genkeymap
для извлечения отображения, используемого X. Вам нужно найти код для вашей раскладки клавиатуры. Вы можете найти его в этом списке . Вот пример с моей французской клавиатурой:
cd /etc/xrdp/ # goes into the right directory
sudo xrdp-genkeymap km-040C.ini
И, наконец, после перезапуска службы с sudo service xrdp restart
ваша проблема должна быть устранена.
Обратите внимание, что вам может потребоваться установить команду xrdp-genkeymap
с помощью вашего любимого менеджера пакетов. Файл km-040C.ini
может уже находиться в каталоге /etc/xrdp/
, однако я не уверен, что это норвежская альтернатива.