我有以下环境:
**DirA**
file1
file2
file3
**DirB**
file1
file2
file4
期望输出:
**DirC**
file4
我已经看到了使用 diff、sed 和 xargs 解决类似问题的解决方案,但我似乎无法让它运行。
diff -rq DirA >DirB | sed -n "s/^Only in \(folderA\): \(.*\)/'\1\/\2'/p" | xargs cp -vt DirC
问题是我正在使用绝对路径(因为 DirA 和 DirB 位于不同的磁盘上),我不知道如何相应地调整 sed commando。任何帮助都非常感谢。
答案1
我会采取稍微不同的方法(假设只有 dirA 和 dirB 中的文件 - 没有子目录,并且假设文件名称中没有特殊字符):
$ ls dir[ABC]
dirA:
file1 file2 file3
dirB:
file1 file2 file4
dirC:
$ ( cd dirA && for f in * ; do if [[ ! -f ../dirB/${f} ]] ; then echo mv -n -- "${f}" "../dirC/" ; fi ; done )
mv file3 ../dirC
相应地调整 dirA、dirB、dirC 的路径,如果您对mv
回显的命令感到满意,则再次运行该命令(无需回显)。