2 votos

Cómo identificar el tipo de archivo para un lote masivo de archivos y adjuntar la extensión adecuada a cada uno

Tengo algo más de mil (1000) archivos cuyo sufijo/extensión ha sido cambiado por un motor de base de datos todos a la misma cosa (por ejemplo, fileName.abcd donde .abcd está en cada archivo sin importar si es un jpg, pdf, o cualquier otra cosa).

El objetivo es convertir todos los archivos a PDF, pero primero quiero ordenar los distintos tipos de archivos en carpetas separadas.

Uso Mac OS X y me imagino que debe haber un Terminal script que lo haga:

  1. Identificar el archivo (¿tal vez con el comando 'Archivo'?) y luego...
  2. Añade la extensión adecuada que...
  3. Permitirme clasificarlos manualmente y colocarlos en carpetas separadas para su posterior procesamiento en función de su tipo de archivo.

Utilizando el comando 'Archivo' de la Terminal en un archivo con el sufijo de la base de datos, los resultados típicos son bastante ampulosos como éste, lo que al menos demuestra que el Mac puede identificar los tipos de archivo aunque tengan los sufijos 'incorrectos':

  • Datos de imagen JPEG, norma JFIF 1.01
  • Documento PDF, versión 1.3
  • Datos en formato de texto enriquecido, versión 1, ANSI
  • etc.

Así que sólo necesito un script que etiquete los archivos para poder usar Automator para renombrar los archivos más tarde con el sufijo apropiado.

Observo que si en el Terminal escribo 'Archivo' y después suelto o copio varios archivos en él, y le doy a retorno, entonces el Terminal los identifica correctamente a todos en el mismo orden, pero no es útil a menos que al menos etiquete cada tipo de archivo de manera diferente.

Me imagino que esta tarea inicial es demasiado difícil para Automator, pero me encantaría que se demostrara lo contrario.

Se agradecería cualquier ayuda para hacerlo. He revisado este tablero y otros lugares esperando que alguien más haya tenido un problema similar pero no he encontrado ningún problema de este tipo en ninguna parte.

1voto

Philip Rieck Puntos 21405

Esto es bastante fácil combinando algunas herramientas estándar:

  • file para buscar el tipo de mime
  • tr para eliminar las barras inclinadas (de lo contrario, tendría carpetas anidadas para diferentes grupos de archivos)
  • bueno, algunos obvios mkdir y mv comandos

    for file in * do mime=$(file --brief --mime-type "$file" | tr '/' '_') mkdir -p "$mime" mv "$file" "$mime/$file" done

Como alternativa, también podría listar directamente las extensiones de los archivos para cada tipo mime esperado y renombrarlos automáticamente de forma adecuada.

for file in *
do
    mime=$(file --brief --mime-type "$file")

    case "$mime" in
    "image/jpeg")
        extension="jpeg"
        ;;
    "text/plain")
        extension="txt"
        ;;
    "application/pdf")
        extension="pdf"
        ;;
    *)
        continue;
        ;;
    esac

    filename="${file%.*}"

    mv "$file" "$filename.$extension"
done

Tenga en cuenta que, en aras de la legibilidad, no he tenido en cuenta los nombres de archivo que contienen espacios. Si los tiene, tendrá que aplicar uno de los patrones para tratar los espacios en los nombres de archivo . Como parece que no los tienes los he dejado fuera, ya que hacen que los scripts parezcan mucho más complicados como son.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X