
질문이것mpv 플레이어와 DVD에 대한 질문을 하다가 좀 더 일반적인 질문에 빠졌습니다. 일반적으로 디렉토리 이름 중 하나가 가변적인 경로를 지정하는 것이 가능합니까?
명령으로 파일을 실행하고 싶다고 가정해 보겠습니다. 실행 파일은 에 있지만 /dir1/dir2/dir3/
의 이름은 dir2
변수입니다. 단, 항상 포함됩니다 dir3
( 와 유사 VIDEO_TS
하며 항상 /media/username/NAME-OF-DVD/VIDEO_TS/
while 과 유사함 NAME-OF-DVD
).
명령을 사용하여 해당 파일을 실행하려면 경로를 지정해야 합니다. 그러한 명령을 사용할 수 있습니까(하나의 디렉토리 이름이 "일반"일 수 있는 경로와 함께)?
답변1
Bash는 globbing을 사용할 수 있습니다. Globbing을 사용하면 여러 값과 일치하는 패턴을 지정할 수 있습니다. REGEX와 유사하게 작동하지만 동일하지 않다는 점에 유의하는 것이 중요합니다.
*(pattern)
패턴과 0회 이상 일치?(pattern)
패턴과 0번 또는 1번 일치합니다.+(pattern)
패턴과 1회 이상 일치[ ]
[a-z]
a부터 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
답변2
다양한 디렉토리 수준이 단일 디렉토리인 한, 이것이 의미하는 바는, /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"