ディレクトリ名が可変のパスを指定することは可能ですか?

ディレクトリ名が可変のパスを指定することは可能ですか?

尋ねるこれMPV プレーヤーと DVD に関する質問ですが、より一般的な質問に遭遇しました。ディレクトリ名の 1 つが可変であるパスを指定することは一般的に可能ですか?

コマンドを使用してファイルを実行するとします。実行ファイルは にあります/dir1/dir2/dir3/が、 の名前dir2は変数です。ただし、 には常に が含まれますdir3( と同様でVIDEO_TS、 は常に に似ていますが、/media/username/NAME-OF-DVD/VIDEO_TS/NAME-OF-DVD異なります)。

コマンドを使用してそのファイルを実行する場合は、パスを指定する必要があります。そのようなコマンドは使用できますか (1 つのディレクトリ名が「汎用」である可能性があるパスを使用)?

答え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-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"

関連情報