ディレクトリパスにワイルドカード文字を使用する

ディレクトリパスにワイルドカード文字を使用する

ディレクトリの一部が長くて不明な文字列であるbashスクリプトを作成しようとしています。私はディレクトリ名の最初の部分を知っています。既知の文字列とワイルドカードをパスに結合する方法は?現在私は以下を持っています:

ID=$1;

IMP="[email protected]:/data/"$ID"/EER_DATA/$ID"*"/ImpostorScores.txt"

しかし、これは文字通りの意味を伝えます*

ベストアンサー1

いくつかのオプションがあります。

  1. NFS、FUSE-over-SSH、またはその他の方法を使用してリモートファイルシステムをローカルに公開し、エクスポートしたファイルシステムパスにbashデフォルトのglobを適用します。FOO=/*/passwd(ZSHには${~spec}グローバル代替パラメータ拡張があります。そうでない場合は、シェルマニュアルを参照してください。)
  2. SSHを介してリモートシステムに接続し、そこでglobを実行します。ssh host 'echo /*/passwd'
  3. エスケープされた(またはバックスラッシュまたは一重引用符で削除された)グローバル変数をリモートシステムに渡します。scp host:/\*/passwd .

これらのオプションの中には、globの完了とそのファイル名に関連する後続のステップ(変更されている可能性があります)の間でファイル名が変更された場合、競合状態が発生する可能性があります。

おすすめ記事