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 -path
opçã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.