Operaciones sobre varios archivos, exceptuando algunos.

Alvaro Herrera alvherre en alvh.no-ip.org
Jue Jun 14 21:58:09 CLT 2007


Mario Martínez escribió:
> Estimados,
> 
> Tengo una lista muy grande de archivos y deseo hacer operaciones como
> mover/copiar/enlistar/eliminar casi todos los archivos menos
> excepciones particulares. Por ejemplo, tengo los archivos: anita,
> pedrito, juanito, andreita, etc, etc. y deseo
> mover/copiar/enlistar/elimnar a casi todos menos a anita y juanito.
> 
> Con las /wildcards/ solo he coseguido filtrar por patrones, pero no
> por nombres de archivos particulares como los son anita y juanito. La
> idea es hacerlo sinmover los archivos (anita, juanito) temporalmente a
> otra directorio, espero explicarme bien.

$ ls -l
total 0
-rw-r--r-- 1 alvherre alvherre 0 2007-06-14 21:52 andreita
-rw-r--r-- 1 alvherre alvherre 0 2007-06-14 21:52 anita
-rw-r--r-- 1 alvherre alvherre 0 2007-06-14 21:52 juanito
-rw-r--r-- 1 alvherre alvherre 0 2007-06-14 21:52 pedrito

$ find . -name anita -o -name juanito -prune -o -print
.
./pedrito
./andreita



En lugar de -print usas -exec y le pasas de argumento el parametro:

$ find . -name anita -o -name juanito -prune -o -exec echo el archivo es {} \;
el archivo es .
el archivo es ./pedrito
el archivo es ./andreita

o si quieres hacer algo mas complicado, usas un ciclo como este

$ find . -name anita -o -name juanito -prune -o -print |
  while read line; do
     echo el archivo es $line
  done


Si solo quieres archivos y no directorios, agrega un -type f  entre el
-o y el -print (en otro lado no funca):

$ find . -name anita -o -name juanito -prune -o -type f -print 
./pedrito
./andreita



Facil no?

-- 
Alvaro Herrera       Valdivia, Chile   ICBM: S 39º 49' 18.1", W 73º 13' 56.4"
"La naturaleza, tan frágil, tan expuesta a la muerte... y tan viva"


Más información sobre la lista de distribución Linux