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