Encuentra un archivo duplicado en otro directorio

Encuentra un archivo duplicado en otro directorio

Tengo un archivo llamado:f{number}.ext

En otro directorio existe una lista de directorios:

  • 001
  • 002
  • 003
  • ....

Cada uno de estos directorios contiene una lista de archivos:

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

Los nombres de los archivos se repiten en cada directorio, pero son archivos diferentes. Necesito encontrar este archivo ( f{number}.ext) en la lista de directorios mencionada y obtener el nombre del directorio raíz, por ejemplo 003, o imprimir un mensaje si no se encuentra el archivo.

¿Puedo utilizar fdupespara esta operación?

Respuesta1

Podrías 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
  • Se 2>&1ocupa del mensaje de error de ls cuando no se encuentra el archivo (por ejemplo ls: cannot access */f005.ext: No such file or directory).
  • La ifprueba si una cadena myFilecomienza con ls(entonces tuvimos un error) o no (luego encontramos un archivo).
  • dirnamedevuelve el directorio. basenamedevolvería el nombre del archivo.

información relacionada