对于一个学校项目,我有一个shell脚本,它应该将两个目录中的文件(不看子目录)复制到第三个目录中。我正在测试-u命令,这样如果两个文件具有相同的名称,则只会复制较新的文件(这也是一个规范)。我的shell脚本看起来像这样(不包括#!和错误检查):
cd $1 #first directory
for file in `ls`; do
if [ -f $file ]; then
cp "$file" ../$3 # $3 is the third directory
fi
done
cd ../$2
for file in `ls`; do
if [ -f $file ]; then
cp -u "$file" ../$3
fi
done
我当前的shell脚本将复制目录3中不存在的文件,并且不会使用具有相同名称的旧文件覆盖较新的文件。但是,我的shell脚本不会使用目录3中具有相同名称的较新文件覆盖旧文件。我认为-u命令没有任何问题。你能帮我找到代码中的错误吗?谢谢!
答案 0 :(得分:1)
您在第一个循环中缺少-u
选项:
cp "$file" ../$3 # $3 is the third directory
应改为:
cp
的 -u
强> "$file" ../$3 # $3 is the third directory