非常感谢您提前帮助!
我有一个带有一些html文件的目录
$ ls template/content/html
devel.html
idex.html
devel_iphone.html
devel_ipad.html
我想编写一个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
}
大写字母是我被困的地方。
非常感谢。
答案 0 :(得分:4)
-n选项是否足以满足您的需求?
-n, --no-clobber
do not overwrite an existing file (overrides a previous -i option)
答案 1 :(得分:2)
像这样使用rsync:
rsync -c -avz --delete $orig_html $dest_html
使$ orig_html与基于$ dest_html的文件校验和保持一致。
答案 2 :(得分: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
答案 3 :(得分:0)
由于$f
,您的/*
变量包含完整路径。
尝试做类似的事情:
for ff in $orig_html/*
do
thisFile=${ff##*/}
if [ ! -f ${dest_html}/$thisFile ]; then
cp $ff ${dest_html}
fi
done