Command line 用于确定目录的脚本';差异';

Command line 用于确定目录的脚本';差异';,command-line,diff,md5sum,Command Line,Diff,Md5sum,我有两个目录,它们是同一软件包的不同版本。我想列出在这两个目录之间更改的所有文件/目录,然后将这些差异复制到一个新目录 我一直在用md5sum和diff-Nurq尝试不同的脚本,但没有得到我想要的结果 有什么建议吗 编辑: 我最初尝试使用md5sums,但似乎不起作用,尤其是在缺少新文件的情况下 接下来,我尝试了这样一个循环: for x in `diff -Nurq ./dir1/ ./dir2/ | awk -F" " '{print $4}'` do mkdir -vp ./dir_

我有两个目录,它们是同一软件包的不同版本。我想列出在这两个目录之间更改的所有文件/目录,然后将这些差异复制到一个新目录

我一直在用
md5sum
diff-Nurq
尝试不同的脚本,但没有得到我想要的结果

有什么建议吗

编辑

我最初尝试使用
md5sum
s,但似乎不起作用,尤其是在缺少新文件的情况下

接下来,我尝试了这样一个循环:

for x in `diff -Nurq ./dir1/ ./dir2/ | awk -F" " '{print $4}'`
do 
  mkdir -vp ./dir_1_2_upgrade/$x; 
  cp $x ./dir_1_2_upgrade/$x
done
但最终生成了一堆目录,没有文件

source=SOME_DIR
dest=OTHER_DIR

# TODO: rewrite as awk script
delta=`diff -ur $source $dest`
deleted=`echo "$delta" | grep "^Only in ${source}:" | sed "s/^Only in ${source}: //"`
added=`echo "$delta"   | grep "^Only in ${dest}:"   | sed "s/^Only in ${dest}: //"`
changed=`echo "$delta" | grep '^\+\+\+' | awk '{print $2}'`

echo $deleted
echo $added
echo $changed

如果文件名不包含空格,则可以使用。如果你想让它尽可能通用,请检查程序的源代码,例如。

你尝试了什么,失败的原因是什么?@larsmans请查看我的编辑。你复制有更改的文件的方法永远不会捕获删除,这是一件坏事吗?@larsmans,我认为这是一件好事,因为我想为用户提供添加新内容的选项,但不会破坏他们以前可能建立的任何东西。处理删除听起来更复杂,对吗?