背景:
在比较两个目录时,
命令1,来自互联网:
diff <(find "$DIR1" -printf '%P\n' | sort) <(find "$DIR2" -printf '%P\n' | sort) | grep '^[<>]'
比command2快307倍:
diff -rq --no-dereference "$DIR1" "$DIR2" && echo "no difference" || echo "differences!"
command1 快 307 倍,基于一台目录包含 88000 个文件 1000 GB
的计算机
命令 1:检查文件名,而不是文件内容,快速比较。
命令 2:检查文件内容,但花费的时间增加了 307 倍。
command3 = command1 + echo 结果:
diff <(find "$DIR1" -printf '%P\n' | sort) <(find "$DIR2" -printf '%P\n' | sort) | grep '^[<>]' && echo "no difference" || echo "differences!" ;
问题:
如何"differences!"
在两个目录之间正确回显,
因为 command3 输出是
错误的"no difference"
,"differences!"
因为一个文件(empty.txt)
放在一个目录中,而不是两个目录中:
> empty.txt
no difference
脚本:
DIR1="/media/x/8001G_GPTEXT4/Test1/E BOOKS"
DIR2="/media/x/2000G_DOSNTFS/Test1/E BOOKS"
diff <(find "$DIR1" -printf '%P\n' | sort) <(find "$DIR2" -printf '%P\n' | sort) | grep '^[<>]' && echo "no difference" || echo "differences!" ;
diff -rq --no-dereference "$DIR1" "$DIR2" && echo "no difference" || echo "differences!" ;
详细信息:
neofetch --stdout |grep 'OS:'
操作系统:Kubuntu 22.04.3 LTS x86_64
再次,如何使用diff
文件名,而不是文件内容,以及
回显"differences!"
--