6 votos

Intentando copiar un archivo de una red compartida a otra ignorando el carácter de tilde

He estado intentando copiar un volumen de archivos de una red compartida a otra. Debido a que la mayoría de estos archivos son archivos de Mac, estoy usando Mac Terminal para hacerlo. He probado todas las combinaciones de cp, rsync, and ditto que se me ocurrió.

El problema radica en que muchos de estos archivos tienen un nombre similar y de vez en cuando me encuentro con uno que tiene un carácter de tilde en el nombre del archivo. Dependiendo de la variación de cp or rsync que utilizo, cuando se encuentra con esto falla, indicando que el archivo ya existe, o bien, se salta el archivo con la tilde por completo y continúa con el proceso.

Por ejemplo: "28910 BP Umba Show.SIT" es tratado como idéntico a "28910B~1.SIT" y, por tanto, no se copiará en la nueva ubicación del archivo.

Cualquier ayuda es muy apreciada, gracias de antemano.

3voto

Douglas Puntos 10417

El nombre del archivo 28910B~1.SIT parece un nombre de archivo abreviado de MS-DOS que tiene más de los 8,3 caracteres (nombres de archivo largos).

Es importante tener en cuenta que a partir de Windows 2000, tanto el nombre largo como el acortado de 8.3 se mantuvieron (el archivo tenía ambos nombres)

...cuando una aplicación guarda un archivo en un ordenador con Windows 2000, se conservan tanto el nombre de archivo 8.3 como el nombre de archivo largo.

Por ejemplo, 28910 BP Umba Show.SIT se abrevia automáticamente a 28910B~1.SIT y los duplicados se incrementan ( 28910B~2.SIT , 28910B~3.SIT , 28910B~4.SIT etc.) Puede leer más sobre esta convención de nomenclatura en Red Técnica de Microsoft

Es muy probable que sea un duplicado de uno de tus archivos, pero la única forma de saberlo con certeza es abrir ambos y verificarlos.

Del comentario:

De cualquier manera, necesito alguna magia que copie el archivo e ignore la tilde.

No puede ignorar la tilde: está ahí y hay que tratarla; en lo que respecta a MacOS, los dos archivos tienen nombres idénticos (porque así es).

Para copiar ambos archivos pero no sobrescribir el que ya está en la carpeta de destino, puedes hacer una prueba rápida en tu comando para ver si el archivo ya existe en un bucle for/do:

for file in /source/directory; do $time=date +%s; if [[ -f /target/directory/$file ]]; then cp $file ${file}-${time}; else cp $file /target/directory/$file; fi; done

Este comando analizará su directorio de origen, comprobará si el archivo existe en el directorio de destino, si lo hace, copiará el archivo añadiendo el tiempo actual en segundos (para asegurar que no hay múltiples duplicados); si no existe ningún duplicado, simplemente copiará el archivo.

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