Comando Unix para localizar os arquivos em um diretório, mas não em outro?

Comando Unix para localizar os arquivos em um diretório, mas não em outro?

Qual é o comando unix para localizar arquivos que estão em um diretório e não em outro diretório? Eu só me importo com nomes de arquivos.

Obrigado.

Responder1

Presumo que você queira fazer essa pesquisa em um diretório de nível superior. Nesse caso, você pode usar a -pathopção com find.

Por exemplo, dada a estrutura de diretórios abaixo

+---dir1/test1.txt
  |
  |--dir2/test1.txt

para encontrar arquivos correspondentes a 'test*' em dir1 use

find -path '*dir1*' -iname 'test*'

Responder2

Para comparar dois diretórios, você pode usar isto:

diff <(cd "$dir1"; find | sort) <(cd "$dir2"; find | sort)

Para fazer isso apenas de uma maneira e produzir uma lista de arquivos, tente isto:

diff <(cd "$dir1"; find | sort) <(cd "$dir2"; find | sort) \
| grep '< ./' | sed "s,< ./,$dir1/,"

Para que isso funcione corretamente, nem $dir1 nem $dir2 devem incluir a barra final.

informação relacionada