¿Cómo escribir archivos en un orden específico?


4

De acuerdo, aquí hay un problema extraño: mi esposa acaba de comprar un Nissan Altima 2014. Entonces, tomé su biblioteca de iTunes y convertí los archivos .m4a a .mp3, ya que el sistema de audio del automóvil solo admite .mp3 y .wma. Hasta aquí todo bien. Luego copié los archivos en una memoria USB con formato FAT-32 de DOS, y conecté la unidad al puerto USB del automóvil, solo para descubrir que todas las pistas estaban fuera de secuencia. Todas las pistas comienzan con un prefijo numérico de dos dígitos, es decir, 01, 02, 03, etc. Así que usted pensaría que estarían en orden. Entonces llamé al soporte de Nissan Connect y el representante me dijo que hay un problema conocido con la lectura de los archivos en el orden correcto. Dijo que los archivos se leen en el mismo orden en que se escriben. Entonces, copié manualmente algunos álbumes con las pistas en un orden predeterminado, y efectivamente él estaba en lo correcto.

Copié unos 6 álbumes para probarlos, luego cambié al directorio de nivel superior e hice un "find.> Music.txt". Luego pasé este archivo a rsync así:

rsync -av --files-from=music.txt . ../Marys\ Music\ Sequenced/

Los archivos parecían copiados en orden, pero cuando enumeré los archivos en orden de tiempo modificado, estaban en la misma secuencia que los archivos originales:

../Marys Music Sequenced/Air Supply/Air Supply Greatest Hits> ls -1rt
01 Lost In Love.mp3
04 Every Woman In The World.mp3
03 Chances.mp3
02 All Out Of Love.mp3
06 Here I Am (Just When I Thought I Was Over You).mp3
05 The One That You Love.mp3
08 I Want To Give It All.mp3
07 Sweet Dreams.mp3
11 Young Love.mp3

Entonces, la pregunta es, ¿cómo puedo copiar archivos listados en un archivo llamado music.txt, y copiarlos a un destino, y asegurarme de que los tiempos de modificación estén en la misma secuencia que los archivos están listados?

Respuestas:


3

Hiciste dos preguntas, una clara y otra implícita:

  1. ¿Cómo puedo copiar los archivos listados en un archivo llamado music.txt, y copiarlos a un destino, y asegurarme de que los tiempos de modificación estén en la misma secuencia que los archivos están listados?

  2. ¿Cómo puedo lograr que mi reproductor de MP3 lea los archivos en orden alfabético desde una memoria USB (formateada con el sistema de archivos FAT)?

Pero en mi humilde opinión el segundo es el tuyo real. Creo que el chico de Nissan te envió por el camino equivocado. (Ver problema XY )

Pero lo suficientemente parloteado ... ahora trato de responder ambas preguntas:

  1. Su rsyncenfoque es casi la solución a la primera pregunta, solo usted usó el -aparámetro. Rsync -aes equivalente a -rlptgoD, que incluye especialmente -t:

    man rsync (...)

    Esto le dice a rsync que transfiera los tiempos de modificación junto con los archivos y los actualice en el sistema remoto.

    Definitivamente no es lo que quieres. Cuando copie en un sistema de archivos FAT (que no admite propietario, grupos, permisos, enlaces, etc.), no veo una buena razón para la mayoría de las otras opciones proporcionadas -a, así que intente

    rsync -rv --files-from=music.txt . ../Marys\ Music\ Sequenced/
    
  2. Para que sus archivos MP3 se lean en orden alfabético, sugiero otro enfoque. Dudo que los archivos se lean en el mismo orden en que se escribieron según lo indicado por el técnico de Nissan, pero en el orden en que se enumeran en la tabla de asignación de archivos . Y exactamente para reorganizar ese orden hay una herramienta ordenada, llamada fatsort .

    Primero, asegúrese de que su memoria USB no esté montada y busque el dispositivo correspondiente (por ejemplo, usando cat /proc/partitions), digamos que sí /dev/sdi1. Luego ejecuta fatsort:

    fatsort -cn /dev/sdi1
    

    Esto ordena las entradas de archivo sin distinción entre mayúsculas y minúsculas y en el llamado orden natural , que incluye el orden alfabético. 1)

    Es muy rápido y no necesita copiar todos los archivos una y otra vez, si agrega solo otro archivo.


1) No puedo probar el comando en este momento, pero si recuerdo correctamente, -nes lo que quieres. De lo contrario, consulte la ayuda ( fatsort -h) usted mismo.


0

Podría hacerse con xargs:

cat music.txt | xargs -I% rsync -av "./%" "../Marys\ Music\ Sequenced/%"

Una alternativa sería hacer algo como esto (suponiendo que todo sea secuencial):

ls "../Marys\ Music\ Sequenced/" | xargs -I% touch "%"

0

¿No podrías hacer algo como esto?

copy files
for each file in music.txt
    touch destination file
    sleep 1
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.