Encontre valores exclusivos de find

4

Eu quero encontrar arquivos exclusivos dentro de um diretório, que também tem subdiretórios.

Existem tipos específicos de arquivos, digamos, .lib files.

Há o mesmo arquivo .lib dentro de diferentes subdiretórios. Eu preciso encontrar a lista de .lib arquivos dentro do meu diretório home, mas apenas nomes exclusivos. Existe algum método para fazer isso?

Atualmente estou usando

find -name "*.lib" > lib_file_list

Mas ele fornece resultados duplicados, pois alguns dos arquivos .lib estão em vários subdiretórios. Estou usando o CSH.

    
por Thisaru Guruge 15.03.2017 / 17:32

2 respostas

10

Com ferramentas GNU:

find . -name '*.lib' -print0 | awk -v RS='
find . -name '*.lib' -print0 | awk -v RS='%pre%' -F/ '! seen[$NF]++'
' -F/ '! seen[$NF]++'
    
por 15.03.2017 / 17:35
2

Veja o que eu faria:

find -name '*.lib' -printf '%f\n' | sort | uniq > lib_file_list

Algumas coisas para ter em mente:

  • isso não lhe dará os caminhos completos dos arquivos (suponho que isso não importa desde que sua pergunta requer a eliminação de alguns caminhos de qualquer maneira)
  • ele falhará se você tiver novas linhas em qualquer um dos seus nomes de arquivos
  • e, claro, assumindo ferramentas GNU.
por 15.03.2017 / 20:56

Tags