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\//'