在shell脚本中实现cp -u时遇到问题

时间:2015-04-15 18:30:43

标签: linux bash

对于一个学校项目,我有一个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命令没有任何问题。你能帮我找到代码中的错误吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您在第一个循环中缺少-u选项:

cp "$file" ../$3 # $3 is the third directory

应改为:

cp -u "$file" ../$3 # $3 is the third directory