複数の列挙型ファイルを再同期する方法

複数の列挙型ファイルを再同期する方法

data_1.mat、data_2.mat、...、data_n.matファイルがあるとします。 1行のコードでこれらのファイルを他のフォルダにどのように同期できますか?

私が知っている唯一の方法は、forループでこれを行うことです。

for i in 1..n
do 
rsync 'data_$i' \dest\ 
done

サーバーからデータを転送する場合は、forループで毎回新しいSSHを設定する必要があるため、便利ではありません。

ベストアンサー1

シェルワイルドカードを使用して関連ファイルセットを一致させることができます。

cp -p data_*.mat /dest/

主張するとうまくいきますrsyncが、説明に従って使用するのに間違ったツールかもしれません。

rsync -a data_*.mat /dest/

どちらの場合も、シェル(コマンドではない)は、data_*.mat一致するすべてのファイル/ディレクトリのリストに展開されるか、一致するものがない場合は変更されません。 (*ワイルドカードは0個以上の文字と一致し、?正確に1文字と一致します。)

可能な一致のサブセットであれば、1..n少し難しいですが、それほど多くはありません。一部のシェル(含むbash)は、固定された範囲内で支柱の拡張を可能にします{1..27}。これをパターンにリンクすると、別の解決策があります。

cp -p data_{1..27}.mat /dest/

echoワイルドカードパターンを使用するときに拡張するのはシェルなので、何が起こるのかを確認するためにコマンドに入れない理由はありません。

echo data_?.mat
echo rsync -a data_*.mat /dest/
echo cp -p data_{1..27}.mat /dest/

おすすめ記事