非常感谢您的帮助!
我有一个目录,里面有一些html文件
$ ls template/content/html
devel.html
idex.html
devel_iphone.html
devel_ipad.html
我想写一个bash函数,将该文件夹中的每个文件复制到一个新位置(introduction/files/),前提是那里还不存在同名文件。
这就是我目前所拥有的:
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
}
大写字母是我被卡住的地方。
非常感谢。
-n选项是否足以满足您的需求?
-n, --no-clobber
do not overwrite an existing file (overrides a previous -i option)
像这样使用rsync:
rsync -c -avz --delete $orig_html $dest_html
html与基于$dest_html的文件校验和保持一致。
您需要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
由于/*
,您的$f
变量包含完整路径。试着做一些类似的事情:
for ff in $orig_html/*
do
thisFile=${ff##*/}
if [ ! -f ${dest_html}/$thisFile ]; then
cp $ff ${dest_html}
fi
done