试图比较两个目录。一个目录是参考目录 (dir1),另一个目录是进行修改的目录 (dir2)
我需要在 dir2 中相对于 dir1 修改或添加的文件列表。
我使用了 rsync 和 diff 并获得了结果。但输出中需要具有绝对路径的文件。
diff --brief --recursive /test/dir2 /reference/dir1
输出为
仅在/test/dir2中:king.txt
仅在/test/dir2/sdir2中:abc.txt
仅在/test/dir2中:test1
仅在/test/dir2/sdir3中:test.txt
并使用 rsync
rsync -av --dry-run /测试/dir2/ /参考/dir1
输出
发送增量文件列表
./
国王.txt
测试.txt
sdir2/
sdir2/abc.txt
测试1/
发送 52712 字节 接收 1339 字节 108102.00 字节/秒
总大小为 0 加速为 0.00 (试运行)
需要完整路径为 /test/dir2/king.txt 的列表并将其存储在一个文件中。
此致敬意,KJ。
答案1
应该很容易调整 diff 输出以满足您的需求...只需通过 sed 管道传输 diff 即可。
sed -r -e 's/^.*Only in //' -e 's@: @/@'
答案2
您可以只解析输出diff
:
diff --brief --recursive /test/dir2/ /reference/dir1/ |
gawk '(/Only/){print $3""$NF}' | sed 's/://'
确保/
在目录名称中包含尾随字符,此解决方案需要它们。请使用/test/dir2/
和 而不是/test/dir2
。此外,如果您的文件名包含空格,此方法将不起作用。