0

よろしくお願いします!

いくつかのhtmlファイルを含むディレクトリがあります

$ ls template/content/html
devel.html
idex.html
devel_iphone.html
devel_ipad.html

同じ名前のファイルがまだ存在しない場合にのみ、そのフォルダー内のすべてのファイルを新しい場所(introduction / files /)にコピーするbash関数を作成したいと思います。

これは私がこれまでに持っているものです:

orig_html="template/content/html";
dest_html="introduction/files/";

function add_html {
    for f in $orig_html"/*";
    do
        if [ ! -f SAME_FILE_IN_$dest_html_DIRECTORY ];
        then
            cp $f $dest_html;
        fi
    done
}

大文字は私が立ち往生した場所です。

どうもありがとうございます。

4

4 に答える 4

4

-n オプションで十分でしょうか?

   -n, --no-clobber
          do not overwrite an existing file (overrides a previous -i option)
于 2012-09-27T12:07:47.667 に答える
2

次のようにrsyncを使用します。

rsync -c -avz --delete $orig_html $dest_html

$orig_htmlを$dest_htmlベースのファイルチェックサムと同一に保ちます。

于 2012-09-27T12:27:35.893 に答える
0

. のため、変数$fにはフル パスが含まれます/*。次のようなことを試してください:

for ff in $orig_html/*
  do
    thisFile=${ff##*/}
    if [ ! -f ${dest_html}/$thisFile ]; then
       cp $ff ${dest_html}
    fi
  done
于 2012-09-27T13:05:05.287 に答える
0

bash スクリプトが必要ですか? cp-r (再帰) オプションと -u (更新) オプションをサポートします。マニュアルページから:

   -u, --update
      copy only when the SOURCE file is  newer  than  the  destination
      file or when the destination file is missing
于 2012-09-27T12:07:46.793 に答える