Diff nomes de arquivos de dois diretórios?

0

Então, eu executei o ls -C1 em dois diretórios:

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

Como listar apenas diferentes nomes de arquivos / comandos e qual diretório os contém?

    
por modlin 04.03.2018 / 02:16

2 respostas

0

Execute diff <(ls -C1 /bin |sort) <(ls -C1 /sbin |sort) |less .

Com /bin e /sbin como entrada para o comando acima, diff adicionará < aos arquivos exclusivos de /bin e > aos arquivos exclusivos de /sbin . Se você precisar que < e > sejam mais informativos, use sed para substituí-los por sequências mais informativas:

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

    
por 04.03.2018 / 02:24
2

Você pode comparar diretamente com a estrutura de diretórios:

$ 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

Você também pode adicionar recursão especificando -r , se desejar. Se você não quiser saber sobre subdiretórios comuns, adicione grep -v "Common subdirectories" ao pipeline.

    
por 04.03.2018 / 02:36

Tags