Encontre arquivo duplicado em outro diretório

Encontre arquivo duplicado em outro diretório

Eu tenho um arquivo chamado:f{number}.ext

Em outro diretório existe uma lista de diretórios:

  • 001
  • 002
  • 003
  • ....

Cada um desses diretórios contém uma lista de arquivos:

  • f001.ext
  • f002.ext
  • ...

Os nomes dos arquivos são repetidos em cada diretório, mas são arquivos diferentes. Preciso encontrar este arquivo ( f{number}.ext) na referida lista de diretórios e obter o nome do diretório raiz - por exemplo 003- ou imprimir uma mensagem se o arquivo não for encontrado.

Posso usar fdupespara esta operação?

Responder1

Você poderia usar este script bash:

#!/bin/bash
for iNumb in '001' '002' '003' '004' '005'; do
  myFile=`ls */f${iNumb}.ext 2>&1`

  if [ "${myFile:0:2}" == "ls" ]
  then
    echo "File f${iNumb}.ext: File not found"
  else
    echo "File f${iNumb}.ext:" `dirname ${myFile}`
  fi
done
  • O 2>&1trata da mensagem de erro de ls quando o arquivo não é encontrado (por exemplo ls: cannot access */f005.ext: No such file or directory).
  • O ifteste se a string myFilecomeça com an ls(então tivemos um erro) ou não (então encontramos um arquivo).
  • dirnameretorna o diretório. basenameretornaria o nome do arquivo.

informação relacionada