Для рекурсивного сопоставления часто используется find
. Поскольку вы хотите сопоставить все файлы в текущем каталоге и его подкаталогах рекурсивно, но только до определенной глубины, укажите -maxdepth
. Этого нет в POSIX , но он существует во всех текущих * BSD и в GNU find (Linux, Cygwin) и в Busybox (встроенный Linux), так что можно с уверенностью сказать, что он у вас есть. -exec… {} +
- относительно недавнее дополнение к POSIX, но уже некоторое время оно присутствует в GNU и FreeBSD / NetBSD / OSX.
cd /srv/hg && find . -type d -maxdepth 3 -exec /usr/local/bin/hg-ssh {} +
(Я добавил -тип d
, потому что вы, кажется, хотите сопоставить только каталоги, даже если ваша попытка с * * / *
и т. Д. Соответствует файлам всех типов.)
KERNEL
при написании правила для USB-устройства, как написал @dirkt. looking at device '/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.3/ttyUSB19'
» для правильного соответствия (, как вы можете видеть в своем вопросе ). Но udev
и другие ваши правила могут помочь! Однако udevadm info
распечатает необработанную информацию об устройстве.udevadm monitor -u -p
печатает заполненную версию:
udevadm monitor --help
...
-p --property Print the event properties
-k --kernel Print kernel uevents
-u --udev Print udev events
-s --subsystem-match=SUBSYSTEM[/DEVTYPE] Filter events by subsystem
udevadm monitor -kups usb
для получения полностью -заполненных событий У вас есть два варианта:
Записать правило на основе исходного события KERNEL
:
ACTION=="add", SUBSYSTEM=="usb-serial", ENV{DEVTYPE}=="usb_device", \
ENV{PRODUCT}=="403/6011/0", SYMLINK+="my_port"
Правило записи на основе расширенного UDEV
события:
ACTION=="add", SUBSYSTEM=="usb-serial", ENV{DEVTYPE}=="usb_device", \
ENV{ID_VENDOR_ID}=="0403", ENV{ID_MODEL_ID}=="6011", SYMLINK+="my_port"
Вы должны проверить свое правило, чтобы избежать нежелательного поведения перед производством (, например. слишком широкое условие => несколько совпадений => несколько запусков)
udevadm monitor
запуска (, например.:usb1/1-3
в вашем случае)Запустите udevadm test
для сухой -запустите правила udev:
udevadm test --action=add /sys/bus/usb/devices/usb1/1-3
Перезагрузить правила:
udevadm control --reload
Запуск USB-устройства по -подключению:
udevadm trigger -v --action=add --subsystem-match /sys/bus/usb/devices/usb1/1-3