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

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

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

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

  • Должен ли я использовать символические ссылки в / usr / bin или вместо этого использовать переменную PATH?
  • Обои для рабочего стола в XFCE4
  • В чем разница между / bin и ~ / bin?
  • Bash: путь или ссылка на строку в файле?
  • * в конце пути к каталогу
  • Абсолютный путь к исполняемой программе
  • Разрешение местоположения / регистрации исполняемого файла в системе?
  • Последствия наличия переменной переменной $ 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 - лучшая ОС в мире.