Pregunta:
Sé que esto fue básicamente respondido y el automatizador con el script de shell (Sanitize Filenames) funciona muy bien, pero también lo necesito para hacer todas las subcarpetas. Y si es posible, recorte el nombre del archivo a 50 caracteres manteniendo la extensión del archivo. Encontré una línea de código bash que truncó el archivo, pero también eliminó la extensión y eso no funciona bien al transferir estos archivos de Mac a Windows.
El guión tal como está es este
for f in "$1"/*; do
dir=$(dirname "$f")
file=$(basename "$f")
mv "$f" "${dir}/${file//[[:cntrl:]\\\/:*?\"<>|]/_}"
done
No me opongo a usar Applecript en automator para completar esta tarea.
Respuesta:
Puede usar find
. Las opciones en OSX / Darwin's find
son ligeramente diferentes a las de otras variantes * nix, por lo que es posible que algunas de estas funciones no estén disponibles para usted, pero obtendrá la esencia y podrá jugar con las opciones que tiene disponibles:
find -regextype posix-extended -regex '.*\/[^\/]*[[:cntrl:]\\:*?"<>|].*' -print \
-exec mv "{}" "$(echo "{}" | perl -ane 'chomp; s/[[:cntrl:]\\:*?"<>|]//g; print' -)"