Un poco de… consola (IV): rm y find, cp, pushd y popd

Aquí van 3 pequeños «truquillos», tips, o utilidades (como queráis llamarlos), todos para sacarle un poco más de provecho a la consola de GNU/Linux.

Borrar un número grande de archivos

Imaginaos que queréis borrar todos los archivos .txt de un directorio y el número de ellos es muy elevado. Lo normal es que, estando dentro de dicho directorio, ejecutéis lo siguiente:

$ rm *.txt 

Si el número de archivos es muy grande, el comando rm no podrá procesarlos y os dirá algo similar a esto: «lista de argumentos demasiado larga». ¿Qué hacemos entonces para borrar los archivos? Pues podemos echar mano del comando find de esta forma:

$ find . -name "*.txt" -exec rm {} \;

Al lanzarlo, buscará todos los archivos terminados en .txt y, por cada uno de ellos, ejecutará un rm ARCHIVO (los dos paréntesis «{}» indican dónde va el archivo encontrado en dicho comando).

De esta forma, el comando rm sólo procesará un archivo cada vez y podréis borrar todos todos los archivos que queráis.

Esto es aplicable a otros comandos que tengan problemas similares para procesar una lista de argumentos muy larga (si no recuerdo mal, al comando mv también le ocurre este problemilla).

Backup de un archivo con cp

Si queremos hacer un backup de un archivo podemos usar cp de esta forma tan simple:

$ cp archivo archivo_backup

donde archivo es nombre del fichero que queremos salvaguardar y archivo_backup es el nuevo nombre que le daremos (será la copia de seguridad).

Pues hay una forma más corta de hacer esto, y es así:

$ cp archivo{,_backup}

Lo que hace esto es, precisamente, realizar una copia del archivo original y nombrarlo tal y como el original más la coletilla «_backup».

Recuperar último directorio accedido

Situación: estamos en un directorio cuyo path es bastante largo de poner. Sabemos que luego volveremos a él. Si queremos evitar tener que escribir toda la ruta entera, podemos usar los comandos pushd popd. Los usaremos como se indica a continuación.

Estando en el directorio cuya ruta (muy larga…) queremos guardar, ejecutamos este comando:

$ pushd .

Esto guarda en la pila de directorios dicho directorio, de forma que cuando ejecutemos esto:

$ popd

Nos sacará el último directorio de la pila, en este caso, el que habíamos metido antes, con lo cuál nos ahorramos escribir todo el path de nuevo. Lo que hace popd es sacar dicho path de la pila de directorios y nos mueve a dicho directorio, en otras palabras, hace un cd path_directorio.

De momento lo dejamos ahí. En otro artículo de esta serie… más.