Aquí es una solución que he probado varias veces y parece que funciona. Estoy seguro de que alguien con más experiencia puede ofrecer una solución que es mucho más rápido que el mío, pero hasta ahora este es el mejor que puede venir para arriba con.
Yo sugiero hacer una copia de su "recuperado" de los archivos con el genérico de nomenclatura de archivos. Entonces yo tendría que ejecutar el siguiente código en su copia de archivos.
Este AppleScript código me funciona con la última versión de macOS Mojave.
Simplemente pegar este AppleScript código en el Editor de secuencias de Comandos.aplicación y se puede ejecutar el código desde allí.
set genericFolder to (choose folder with prompt "Choose The Parent Folder Containing The Files To Be Renamed")
set sourceFolder to (choose folder with prompt "Choose The Parent Folder Containing The Files With Proper Names")
tell application "Finder"
set genericFiles to files of entire contents of genericFolder as alias list
set sourceFiles to files of entire contents of sourceFolder as alias list
end tell
repeat with genericFile in genericFiles
repeat with sourceFile in sourceFiles
try
set isIdentical to (last word of (do shell script "diff -s " & quoted form of POSIX path of genericFile & " " & quoted form of POSIX path of sourceFile) is "identical") as boolean
if isIdentical is true then
tell application "System Events" to set name of genericFile to name of sourceFile
end if
end try
end repeat
end repeat
Esta imagen es la estructura de carpetas y archivos antes de ejecutar el código. Los archivos de origen están en la imagen de izquierda y de los archivos a renombrar están a la derecha de la imagen. Tomar nota de que la carpeta y el archivo de las estructuras son diferentes en ambas imágenes.
![enter image description here]()
La imagen siguiente es el resultado después de ejecutar el código
![enter image description here]()
Esta solución se ha probado con sólo 38 archivos con nombres genéricos. En mi sistema se tomó 1 minuto y 33 segundos para el proceso y el nombre de los archivos en consecuencia. Sin hacer ningún matemáticas, si usted está tratando de proceso de 500.000 archivos con este código, usted podría estar buscando en la mejor parte de un día completo para que el proceso se complete. Puede que desee considerar la posibilidad de romper el proceso para el procesamiento de un par de carpetas en el tiempo, en lugar de la plena carga de la madre de todos a la vez.
Sin embargo, si sólo está buscando para cambiar el nombre de los archivos con la extensión de nombre ".doc" , puede sustituir este código de arriba...
tell application "Finder"
set genericFiles to files of entire contents of genericFolder as alias list
set sourceFiles to files of entire contents of sourceFolder as alias list
end tell
Con este código, que hará que el proceso sea mucho más rápido.
tell application "Finder"
set genericFiles to ((files of entire contents of genericFolder) whose name extension is "doc") as alias list
set sourceFiles to ((files of entire contents of sourceFolder) whose name extension is "doc") as alias list
end tell
Usted también puede tener el código de proceso sólo los archivos con extensiones de nombre de definir, como en el siguiente ejemplo.
set nameExtensions to {"doc", "pdf"}
tell application "Finder"
set genericFiles to ((files of entire contents of genericFolder) whose name extension is in nameExtensions) as alias list
set sourceFiles to ((files of entire contents of sourceFolder) whose name extension is in nameExtensions) as alias list
end tell