scp を使用して、ディレクトリから特定の拡張子を持つファイルをコピーします。

scp を使用して、ディレクトリから特定の拡張子を持つファイルをコピーします。

*_out.csvリモートサーバーのディレクトリからすべてのコンテンツを取得する必要があるbashスクリプトを作成しています。これらのファイルはすべて、異なるディレクトリの複数のディレクトリにあります。たとえば、ディレクトリ名がと仮定しますox_20190404/。以下を使用してすべてのファイルを見つけることができます。

find ox_20190404/assessment/LWR/validation -type f -name "*_out.csv"

この質問は私の質問の一部に対する答えです。しかし、ディレクトリを完全にコピーしたくないので、上記のコードをどのように実装するのかを理解する必要があります。私がこれから始めるとしましょう:

$ dir="/projects/ox/git"
$ server="myusername@server"
$ scp $server:$dir/$(ssh $server 'ls -t $dir | head -1') .

そこから必要なファイルをどのように取得しますか?

私の質問の最後の部分は、コピーされたすべてのファイルをインポートしてリモートサーバー上の同じファイルパスとディレクトリに配置する方法があるかどうか疑問に思います。

ベストアンサー1

いくつかの変数名を少し変更しました。

確かにこんなに危険な仕事よりも良い方法がありますlsの出力を解析します。しかし、これがあなたに適していることを確認してください。

$ pth="/projects/ox/git"
$ server="myusername@server"
$ dir="$(ssh $server "ls -t \"$pth\" | head -1")"
$ mkdir -p "$pth/$dir"
$ scp -p $server:"$pth/$dir"/'*_out.csv' "$pth/$dir"/

dir最新のリモートディレクトリに設定すると、mkdir -p同じディレクトリ名がローカルに存在することを確認するために使用されます。次に、scpファイルをリモートディレクトリと同じパスと名前のローカルディレクトリにコピーします。 rsyncソリューションを探していましたが、私は思いません。

おすすめ記事