Можно ли указать путь, в котором имя каталога является переменной?

Задав этот вопрос на mpv player и dvds, я наткнулся на более общий вопрос: можно ли вообще указать путь, в котором одно из имен каталогов является переменной?

Предположим, что я хочу выполнить файл с помощью команды. Исполняемый файл находится в /dir1/dir2/dir3/ , но имя dir2 является переменной, хотя оно всегда будет содержать dir3 (аналогично VIDEO_TS , который всегда похож на /media/username/NAME-OF-DVD/VIDEO_TS/ while NAME-OF-DVD меняется).

  • Почему так много программ живут в PATH?
  • Последствия наличия переменной переменной $ PATH?
  • открыть файл, используя CDPATH и символическую ссылку
  • Доступ к исполняемым файлам PgSQL из любого места
  • * в конце пути к каталогу
  • Абсолютный путь к исполняемой программе
  • Если я хочу выполнить этот файл с помощью команды, я должен указать путь. Можно ли использовать такую ​​команду (с путём, в котором одно имя каталога может быть «общим»)?

  • Обои для рабочего стола в XFCE4
  • Как найти / исправить ошибку в пути
  • Последствия наличия переменной переменной $ PATH?
  • Почему так много программ живут в PATH?
  • Должен ли я использовать символические ссылки в / usr / bin или вместо этого использовать переменную PATH?
  • Абсолютный путь к исполняемой программе
  • 2 Solutions collect form web for “Можно ли указать путь, в котором имя каталога является переменной?”

    Bash может использовать globbing. Globbing позволяет указать шаблон, который будет соответствовать нескольким значениям. Он работает аналогично REGEX, но важно отметить, что они не совпадают.

    • *(pattern) соответствует шаблону 0 или более раз
    • ?(pattern) соответствует шаблону 0 или 1 раз
    • +(pattern) соответствует шаблону 1 или более раз
    • [ ] может соответствовать значению, содержащемуся внутри, включая [az] для сквозного z
    • ( | ) может соответствовать значениям по обе стороны от трубы

    Если вы не ставите шаблон, шаблон действует как шаблон.

    Таким образом, путь, подобный /dir1/dir2/dir3/ может быть представлен как:

    • /dir1/*/dir3/
    • /dir1/dir*/dir3/
    • /dir1/*(dir2|otherdir)/dir3/
    • /dir1/dir*[1-99]/dir3/

    Для получения дополнительной информации ознакомьтесь с этой ссылкой: http://mywiki.wooledge.org/glob

    или этот: http://www.linuxjournal.com/content/bash-extended-globbing

    до тех пор, пока меняющийся уровень каталога является единственным каталогом, что я имею в виду, если у вас есть /dir1/dirX/dir3/dir4 а часть dirX не изменяется, как dirX/dirY/dirZ но может быть только одним из dirX , dirY или dirZ , то вы можете ссылаться на /dir1/dirX/dir3/dir4 как /dir1/*/dir3/dir4

    В вашем случае mpv /media/username/*/VIDEO_TS должен работать, хотя, поскольку названия DVD обычно содержат пробелы, я предлагаю включить весь путь между двойными кавычками, такими как "/media/username/*/VIDEO_TS"

    Linux и Unix - лучшая ОС в мире.