Otro título sugerido: como hacer que los nombres de archivo y directorio de Windows sean compatibles con Linux con un único comando.
Va otro mini-micro-nano TIP para mi cada vez mas pequeña audiencia como así también para cuando en el futuro tenga que recurrir nuevamente al comando este y no me acuerde como se usa:
Detox: el único y último programa que vas a necesitar para reemplazar espacios por guiones bajos, vocales con tilde por vocales limpias, eliminar parentesis y un largo etcétera, pasando desde cualquier char que no sea UTF-8 compatible y rompa o te obligue a salvar la línea de comandos de linux con una contrabarra a un archivo con nombre limpio que luego podés parsear sin inconvenientes.
Como bien dice la descripción del comando en el manual:
DESCRIPTION
The detox utility renames files to make them easier to work with. It removes spaces and other such annoyances. It’ll also translate or cleanup Latin-1 (ISO 8859-1) characters encoded in 8-bit ASCII, Unicode characters encoded in UTF-8, and CGI escaped characters.
O la salida del comando si lo ejecutás sin parámetros adicionales:
usage: detox [-hLnrvV] [-f configfile] [-s sequence] [--dry-run] [--special]
file [file ...]
Como se usa:
Para el ejemplo, creé un directorio nuevo con espacios:
pi@ndonga:~ $ mkdir "pasen y vean"
pi@ndonga:~ $ cd pasen\ y\ vean/
Dentro del directorio creé un archivo con espacios y tildes:
pi@ndonga:~/pasen y vean $ touch "cagón el que lee"
pi@ndonga:~/pasen y vean $ ls
cagón el que lee
Se ejecuta detox sobre todos los archivos del directorio (o individualmente si fuera necesario):
pi@ndonga:~/pasen y vean $ detox *
pi@ndonga:~/pasen y vean $ ls
cagon_el_que_lee
Se ejecuta detox sobre el directorio con espacios en el nombre:
pi@ndonga:~/pasen y vean $ cd ..
pi@ndonga:~ $ detox *
pi@ndonga:~ $ ls
pasen_y_vean
Para casos donde tenés que atravesar directorios y subdirectorios conteniendo nombres incompatibles con linux recursivamente podés utilizar find:
pi@ndonga:~ $ mkdir -p pasen_y_vean/un\ directorio/dos\ directorios/tres\ directorios
touch pasen_y_vean/un\ directorio/dos\ directorios/tres\ directorios/archivo\ con\ espacios\ en\ el\ nombre
Antes de detox:
pi@ndonga:~ $ find pasen_y_vean/
pasen_y_vean/
pasen_y_vean/cagon_el_que_lee
pasen_y_vean/un directorio
pasen_y_vean/un directorio/dos directorios
pasen_y_vean/un directorio/dos directorios/tres directorios
pasen_y_vean/un directorio/dos directorios/tres directorios/archivo con espacios en el nombre
Se ejecuta detox sobre todos los archivos y directorios recursivamente:
pi@ndonga:~ $ find pasen_y_vean/ -exec detox {} \;
Después de detox:
pi@ndonga:~ $ find pasen_y_vean/
pasen_y_vean/
pasen_y_vean/cagon_el_que_lee
pasen_y_vean/un_directorio
pasen_y_vean/un_directorio/dos_directorios
pasen_y_vean/un_directorio/dos_directorios/tres_directorios
pasen_y_vean/un_directorio/dos_directorios/tres_directorios/archivo_con_espacios_en_el_nombre
Te sirvió? De nada entonces.
Pequeña audiencia pero pura calidad!
El tamaño de mi audiencia ha ido siempre relación indirectamente proporcional al diámetro de mi panza.