[MicroTIP] Detox – corregí todos los nombres de archivo dentro de un directorio de un solo saque en un único comando oneliner.

 

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 ...]

 

detox - corregir recursivamente o en masa nombres de archivo eliminando espacios y otros caracteres molestos para hacerlos compatibles con Linux

detox – corregir recursivamente o en masa nombres de archivo eliminando espacios y otros caracteres molestos para hacerlos compatibles con Linux

 

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.

2 comentarios

Responder a Dal Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *