[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

 

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 en “[MicroTIP] Detox – corregí todos los nombres de archivo dentro de un directorio de un solo saque en un único comando oneliner.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Wordpress Hashcash needs javascript to work, but your browser has javascript disabled. Your comment will be queued in Akismet!