名前の面倒なフォルダにシェル関数scpを使用する方法

名前の面倒なフォルダにシェル関数scpを使用する方法

私は、ネットワーク上の固定された場所にファイルを簡単に送信できるように、すべてのコンピュータに配置できる関数を書こうとしています。

これはこれまで私のスクリプトです。コンピュータの一部のフォルダには名前が重複する可能性があるため、フォルダ名の末尾にuuidを追加しました。

function putOnSG3() {
uuid=`uuidgen`
if [[ -d $1 ]]; then scp -rv "$1" shiny:/Volumes/Seagate3To/"$1.$uuid";
else echo $1 " is not a directory. Not copying.";
fi;
}

私はそれをそう呼ぶ:

$ putOnSG testFo\[l\}der

問題はこれである:

zsh:1: bad pattern: /Volumes/Seagate3To/testFo[l}der.d84abc26-501b-4f89-a636-518b4059a770

これらの迷惑なファイル名をどのように管理しますか?

ターゲットファイルシステムは大文字と小文字を区別するhfsplusであり、ソースファイルシステムはLinuxシステムとNTFSのさまざまなextfです。

ベストアンサー1

考えられる解決策は次のとおりです。

function putOnSG() {
uuid=`uuidgen`
if [[ -d $1 ]]; then du -sh "$1";
scp -rv "$1" shiny:/Volumes/Seagate3To/\"$1\".$uuid
else echo $1 "is not a directory. Not copying.";
fi;
}

機能しない元のソリューションとの唯一の違いは、scpの2番目のパラメータの引用符の周りのバックスラッシュでした。

おすすめ記事