묻다이것mpv 플레이어 및 DVD 문제와 관련하여 나는 보다 일반적인 질문을 우연히 발견했습니다. 일반적으로 디렉토리 중 하나에 변수 이름이 있는 경로를 지정하는 것이 가능합니까?
명령으로 파일을 실행하고 싶다고 가정해 보겠습니다. 실행 파일은 in 에 있지만 /dir1/dir2/dir3/
but 의 이름은 dir2
항상 포함되어 있지만 변수입니다 dir3
( 와 유사하지만 while 과 VIDEO_TS
는 항상 다릅니다 )./media/username/NAME-OF-DVD/VIDEO_TS/
NAME-OF-DVD
명령을 사용하여 파일을 실행하려면 경로를 지정해야 합니다. 이와 같은 명령을 사용할 수 있습니까(디렉토리 이름 중 하나가 "universal"일 수 있는 경로 사용)?
답변1
Bash는 와일드카드를 활용할 수 있습니다. 와일드카드를 사용하면 여러 값과 일치하는 패턴을 지정할 수 있습니다. 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-extend-globbing
답변2
/dir1/dirX/dir3/dir4
서로 다른 디렉터리 수준이 단일 디렉터리인 한, 섹션 dirX
이 변경되지 않고 dirX/dirY/dirZ
or 중 하나만 될 수 있는 경우 다음과 같이 참조할 수 있습니다.dirX
dirY
dirZ
/dir1/dirX/dir3/dir4
/dir1/*/dir3/dir4
하지만 DVD 제목에는 일반적으로 공백이 포함되어 있으므로 귀하의 경우에는 mpv /media/username/*/VIDEO_TS
작동할 것입니다 . 따라서 전체 경로를 큰따옴표 사이에 넣는 것이 좋습니다."/media/username/*/VIDEO_TS"