Me gustaría un archivo .scpt de AppleScript para determinar el número de caracteres de cualquier archivo .rtf dado. No estoy seguro de si esto es estándar para el conteo de caracteres, pero me gustaría que cada carácter de espacio (" ") también cuente como un carácter.
Me gustaría que la secuencia de comandos logre esto, sin abrir el archivo en TextEdit.
Es importante tener en cuenta que se trata de un archivo de texto enriquecido, no de un simple archivo de texto sin formato (.txt). Este hecho complica las cosas. No es tan simple como cortar el encabezado de texto enriquecido, porque un solo archivo .rtf puede contener varios tipos diferentes de formato de texto enriquecido.
¿Cuál es la mejor manera de hacer esto?
Usted preguntó: "¿Cuál es la mejor manera de hacer esto?" y aunque no tomaré esa determinación, sin embargo, aquí hay un ejemplo usando el do shell script
comando y algunas utilidades de línea de comando.
set theRichTextFile to quoted form of "/path/to/filename.rtf"
set theCharacterCount to do shell script "textutil -stdout -convert txt " & theRichTextFile & " | LANG=en_US.UTF-8 wc -m | sed 's/ //g'"
Tenga en cuenta que theRichTextFile
debe ser un nombre de ruta POSIX entre comillas.
Actualización: por comentario de @ jackjr300, agregado LANG=en_US.UTF-8
al comando.
jackjr300
Locale
no está definido en ningún shell cuando usa eldo shell script
comando, por lo tanto, elwc
comando cuenta todos los caracteres ASCII en cualquier carácter compuesto. Ejemplo: el archivo RTF contiene " Здравствуйте! " (una palabra rusa), elwc
comando devuelve 25 (caracteres ASCII). Para obtener el número correcto, establezcaLANG
algún idioma con UTF-8 , así:do shell script "textutil -stdout -convert txt '/path/of/someFile.rtf' | LANG=en_US.UTF-8 wc -m | sed 's/ //g'"
--> ahora, elwc
comando devuelve 13 (caracteres)