Ficheros con espacios en el nombre IFS

Imaginar que debemos iterar por una enorme jerarquia de directorios, usando find.

Si la partición es NTFS posiblemente habrá nombres de archivo y de directorio con espacios.

Podemos establecer el separador de campo a nueva linea (IFS) si vamos a operar con nombres de archivo o directorio que puedan contener espacios:

#!/bin/bash
IFS='
'
lista=`find $1 -name $2`
for i in $lista
  do
    rm -i $i
  done

El script anterior que podria llamarse limpieza.sh, espera 2 parámetros: $1 el directorio donde empezar a buscar, por ejemplo

 /home/jblanco

, y $2 el patrón de búsqueda para la opción name, por ejemplo:

*.avi

Ejecuta el find cuyo resultado mete en la variable lista, con la cual itera en un bucle for, para borrar los archivos encontrados.

Y una llamada al script, tal que así:

./limpieza.sh /home/jblanco *.avi

 

Ficheros con espacios en el nombre IFS

Imaginar que debemos iterar por una enorme jerarquia de directorios, usando find.

Si la partición es NTFS posiblemente habrá nombres de archivo y de directorio con espacios.

Podemos establecer el separador de campo a nueva linea (IFS) si vamos a operar con nombres de archivo o directorio que puedan contener espacios:

#!/bin/bash
IFS='
'
lista=`find $1 -name $2`
for i in $lista
  do
    rm -i $i
  done

El script anterior que podria llamarse limpieza.sh, espera 2 parámetros: $1 el directorio donde empezar a buscar, por ejemplo

 /home/jblanco

, y $2 el patrón de búsqueda para la opción name, por ejemplo:

*.avi

Ejecuta el find cuyo resultado mete en la variable lista, con la cual itera en un bucle for, para borrar los archivos encontrados.

Y una llamada al script, tal que así:

./limpieza.sh /home/jblanco *.avi

 

Deja un comentario

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.