В скрипте bash я хотел бы проанализировать имена всех подкаталогов и найти все подкаталоги, которые имеют совпадающую строку, но я не хочу, чтобы подкаталоги соответствовали.Я заинтересован в автоматизации создания моих переменных $ PATH и $ PYTHONPATH на основе структуры каталогов.
Вот пример: допустим, я хочу просмотреть папки ~ / dev и ~ / bin и найти все подкаталоги с помощьюbin / содержит программы, которые я хочу запускать в оболочке.Я могу получить список с
$ ls -lR $HOME/bin $HOME/dev |grep "\/" | grep "bin:"
/Users/dat5h/bin:
/Users/dat5h/bin/project/bin:
...
. Все они могут быть добавлены к $PATH
, и все доступные сценарии готовы к запуску.
НО, скажем, я искал каталоги с модулями и пакетами python для добавления в $PYTHONPATH
.Я мог бы предположительно искать все каталоги, которые начинаются с /py-
.Итак, я пытаюсь:
$ ls -lR $HOME/bin $HOME/dev |grep "\/" | grep "/py-"
/Users/dat5h/bin/py-test:
/Users/dat5h/bin/py-test/test-package:
/Users/dat5h/bin/py-test/test-package/nested-test:
...
Я думаю, что я не хотел бы помещать каталоги и подкаталоги пакетов в путь.Я уверен, что это будет странно, но я на самом деле новичок в python, поэтому предложения будут полезны.Как мне построить тестовый пример, чтобы получить каталоги только с py- *, но без последующих подкаталогов?
Я пытался:
$ ls -lR $HOME/bin $HOME/dev |grep "\/" | egrep "/py-.*[^/]:"
Но это не дает работусделано либо.Может быть, лучше регулярное выражение?Любая помощь будет принята с благодарностью!
РЕШЕНИЕ
Решением, которым я в итоге доволен, была предложенная ниже находка с регулярным выражением кожных покровов:
find $HOME/bin $HOME/dev -type d -regex ".*\/py\(\w\|-\w\)*"
При этом будут найдены все подкаталоги ~ / bin и ~ / dev, которые являются некоторыми вариантами "pySOMETHING", "py-SOMETHING", "pySOME_THING_ELSE" или "py-SOME_THING_ELSE", ноне захватывает никакие подкаталоги тех, если они также не соответствуют этой строке.Это гарантирует, что у меня может быть какое-то простое соглашение об именах для всех моих каталогов с модулями / пакетами python, и я могу импортировать их таким образом, чтобы случайно не иметь возможности импортировать вложенные пакеты без иерархии.