
Tengo una carpeta (la Copia de Seguridad del iPhone) con varios archivos sin sufijo.
Quiero ejecutar un proceso por lotes sobre estos archivos, que detecta el tipo de archivo de cada archivo (con la ayuda de la base de datos de archivos mágicos (/usr/share/misc/magiaoarchivo de hombre), y automáticamente cambia/cambia el nombre de su sufijo de archivo (desde un archivo de base de datos/tipo mime<->sufijo) en consecuencia.
Las horas de búsqueda en Google y StackExchange-Searching no arrojaron resultados, debido a la naturaleza general de las palabras clave involucradas "archivo", "magia", "cambiar nombre", etc. ¡Se agradece la ayuda!
Respuesta1
¿Cómo se ve su base de datos de sufijo tipo <->? No es tan trivial interpretar file
el resultado. Simplemente asumiré: * que el primer archivo de palabras que se imprime es suficiente * esta palabra es la clave en un archivo donde cada línea contiene: y el valor es el sufijo que queremos
Para bash, escribiría una función que tome como argumento el tipo de archivo y repita el sufijo:
MISTERIOUSFILEMIMETYPETOSUFFIXDB=/path/to/key/value/file
typetosuffix () {
grep -E "^\s*$1:" ${MISTERIOUSFILEMIMETYPETOSUFFIXDB}| cut -d : -f 2
}
Con esa función puedes
for f in $(find /path/to/iphone/backup -type -f)
do
FILEWITHOUTSUFFIX = basename $f
[ ${FILEWITHOUTSUFFIX} = ${FILEWITHOUTSUFFIX%.*} ] && continue #the file has a suffix after all
TYPE=$(file $f | cut -f 2) #put type determining magic here
SUFFIXITSSUPPOSEDTOHAVE=$(typetosuffix $TYPE) #fetch suffix from DB
mv $f $f$SUFFIXITSSUPPOSEDTOHAVE #rename the file
done