Leyendo el fichero que se indica como entrada en <soloNombres.txt:
Para cada línea la muestra en pantalla.
while read p; do echo “$p”; done <soloNombres.txt
Podemos completar el comando con un condicional del tipo, si existe el fichero haz…. Para ello reemplazamos el do echo$ del ejemplo anterior por la prueba de si existe o no un fichero.
if [ -f “nombre.CR2” ]; then echo “nombre.CR2”;fi;
El condicional if comprueba si [-f “nombre.CR2”] existe (verdadero) y en dicho caso ejecuta el “echo”
Si lo combinamos con el comando anterior y en lugar del “nombre.CR2” comprobamos si existe cada línea del fichero terminada en .CR2
while read p; do if [ -f “$p.CR2” ]; then echo “$p”;fi; done <soloNombres.txt
La ejecución imprimirá una línea por cada línea del fichero soloNombres.txt que exista en el directorio actual con la extensión .CR2
El condicional podemos completarlo para que haga más cosas, por ejemplo mover un fichero cuyo nombre coincida con la línea del fichero y que se encuentre en otra ruta al local y tenga extensión jpg al directorio actual y borre el fichero del directorio actual con extensión CR2
while read p; do if [ -f “/drives/z/otra/ruta/$p.jpg” ]; then cp “/drives/z/otra/ruta/$p.jpg” .; rm “$p.CR2”;fi; done <soloNombres.txt
En mi caso par construir el fichero soloNombres.txt he usado dos comandos en el directorio actual (donde se encuentran los CR2)
Para sacar la relación de los ficheros CR2, cada línea quedará como nombre.cr2
xxxxx.cr2
ls -lha *.cr2 |awk ‘{print $9}’ >cr2.txt
Para quedarme solamente con el nombre del fichero, sin la extensión:
cat cr2.txt |awk -F “.” ‘{print $1}’>soloNombres.txt