ディレクトリの一部が長くて不明な文字列であるbashスクリプトを作成しようとしています。私はディレクトリ名の最初の部分を知っています。既知の文字列とワイルドカードをパスに結合する方法は?現在私は以下を持っています:
ID=$1;
IMP="[email protected]:/data/"$ID"/EER_DATA/$ID"*"/ImpostorScores.txt"
しかし、これは文字通りの意味を伝えます*
。
ベストアンサー1
いくつかのオプションがあります。
- NFS、FUSE-over-SSH、またはその他の方法を使用してリモートファイルシステムをローカルに公開し、エクスポートしたファイルシステムパスに
bash
デフォルトのglobを適用します。FOO=/*/passwd
(ZSHには${~spec}
グローバル代替パラメータ拡張があります。そうでない場合は、シェルマニュアルを参照してください。) - SSHを介してリモートシステムに接続し、そこでglobを実行します。
ssh host 'echo /*/passwd'
- エスケープされた(またはバックスラッシュまたは一重引用符で削除された)グローバル変数をリモートシステムに渡します。
scp host:/\*/passwd .
これらのオプションの中には、globの完了とそのファイル名に関連する後続のステップ(変更されている可能性があります)の間でファイル名が変更された場合、競合状態が発生する可能性があります。