Вы должны начать с использования udevadm monitor
при подключении целевого устройства или udevadm info --name=/dev/xvdb1 --attribute-walk
, когда оно уже подключено, чтобы посмотреть, как udev видит ваше устройство. Затем вы можете создать правила udev, которые соответствуют только специальному устройству. Также хорошим стартером будет blkid
, где вы можете увидеть идентификатор вашего устройства, для которого вы можете создать правила udev. (Примеры правил могут, например. можно найти по адресуhttps://wiki.debian.org/udev)
Есть много способов извлечь предпоследний элемент из пути. Вот несколько вариантов решения
.p='C:\Users\Administrator\Desktop\Photos-or\3-PRO\3-1-CR\CR-RESTS\LES-COQS\1920x500'
echo "$p" | grep -oP '.*\\\K[^\\]*(?=\\[^\\]+)' # PCRE
echo "$p" | sed 's!^.*\\\([^\\]*\)\\[^\\]*$!\1!' # RE
echo "$p" | awk -F'\\' '{print $(NF-1)}' # Awk
IFS='\\' ps=($p); echo "${ps[-2]}" # Shell (bash)
px="${p%\\*}"; echo "${px##*\\}" # Shell
Выражения гораздо труднее читать из-за того, что каждая обратная косая черта в пути к папке Windows должна сопоставляться двойной обратной косой чертой в каждом шаблоне RE. (Фактически, я работал над парой из них, заменив \
на /
.)
Вы можете использовать sed с расширенным регулярным выражением и командой подстановки:
$ echo "C:\Users\Administrator\Desktop\Photos-or\3-PRO\3-1-CR\CR-RESTS\LES-COQS\1920x500" | sed -E 's/(.*\\)([^\\]+)(\\[^\\]+)/\2/'
LES-COQS
Возможно, это поможет вам получить ожидаемый результат
#!/bin/bash
# GNU bash, version 4.4.20
echo "C:\Users\Administrator\Desktop\Photos-or\3-PRO\3-1-CR\CR-RESTS\LES-COQS\1920x500" | rev | awk -F'\' '{ print $2 }' | rev
Выход:
LES-COQS
Проверено на:https://rextester.com/l/bash_online_compiler
Предполагая, что вы хотите вывести второй -последний компонент этого пути в стиле MS -DOS -, вы можете сделать:
msdos_path='C:\Users\Administrator\Desktop\Photos-or\3-PRO\3-1-CR\CR-RESTS\LES-COQS\1920x500'
expr "\\$msdos_path" : '.*\\\(.*\)\\.*'
Здесь будет вывод LES-COQS
.