Localiza o arquivo duplicado em outro diretório

0

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 estes são arquivos diferentes. Eu preciso encontrar este arquivo ( f{number}.ext ) na lista de diretórios referida e obter o nome do diretório raiz - por exemplo, 003 - ou imprime uma mensagem se o arquivo não for encontrado.

Posso usar fdupes para esta operação?

    
por Yuchimenko Igor 07.12.2015 / 14:21

1 resposta

0

Você pode 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>&1 lida com a mensagem de erro de ls quando o arquivo não é encontrado (por exemplo, ls: cannot access */f005.ext: No such file or directory ).
  • O if teste se ou a string myFile começa com ls (então tivemos um erro) ou não (então encontramos um arquivo).
  • dirname retorna o diretório. basename retornaria o nome do arquivo.
por 07.12.2015 / 15:38