如何使用 diff 来区分文件名而不是文件内容,并回显“差异!”

如何使用 diff 来区分文件名而不是文件内容,并回显“差异!”

背景:
在比较两个目录时,
命令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!"

--

相关内容