两个目录的文件名不同?

两个目录的文件名不同?

ls -C1所以,我在两个目录上运行了:

mod@ux:~$ ls -C1 /bin | wc -l
165
mod@ux:~$ ls -C1 /sbin | wc -l
167

如何仅列出不同的文件名/命令以及包含它们的目录?

答案1

您可以将其直接与目录结构进行比较:

$ diff /sbin /bin|sort
Only in /bin: arping
Only in /bin: attr
Only in /bin: awk
Only in /bin: basename
[...]
Only in /sbin: agetty
Only in /sbin: arp
Only in /sbin: arptables-compat
Only in /sbin: badblocks

-r如果您愿意,您也可以通过指定来添加递归。如果您不想了解公共子目录,请添加grep -v "Common subdirectories"到管道中。

答案2

执行diff <(ls -C1 /bin |sort) <(ls -C1 /sbin |sort) |less

使用/bin/sbin作为上述命令的输入,diff将附加<到唯一的文件/bin>唯一的文件/sbin。如果您需要 和<>提供更多信息,您可以使用sed更多信息字符串来替换它们:

diff <(ls -C1 /bin |sort) <(ls -C1 /sbin |sort) |sed -e 's/^< /\/bin\//' -e 's/^> /\/sbin\//'

相关内容