디렉토리명이 가변적인 경로를 지정할 수 있나요?

디렉토리명이 가변적인 경로를 지정할 수 있나요?

질문이것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중 하나만 될 수 있는 경우 다음과 같이 참조할 수 있다는 것입니다.dirXdirYdirZ/dir1/dirX/dir3/dir4/dir1/*/dir3/dir4

귀하의 경우에는 mpv /media/username/*/VIDEO_TS작동할 것입니다. 하지만 DVD 제목에는 일반적으로 공백이 포함되어 있으므로 전체 경로를 다음과 같은 큰따옴표로 묶는 것이 좋습니다."/media/username/*/VIDEO_TS"

관련 정보