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 fdupes
para 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>&1
ocupa del mensaje de error de ls cuando no se encuentra el archivo (por ejemplols: cannot access */f005.ext: No such file or directory
). - La
if
prueba si una cadenamyFile
comienza conls
(entonces tuvimos un error) o no (luego encontramos un archivo). dirname
devuelve el directorio.basename
devolvería el nombre del archivo.