Pequeña duda con rm

m0rG

Veréis hoy en la uni he tenido la primera práctica de programación,que consistía en una introducción al uso de GNU/Linux y sus comandos básicos (modo texto).Como parte de la práctica lógicamente nos han mandado una serie de ejercicios.Hasta ahí ningún problema ya que llevo un tiempo usando Linux y los comandos básicos no tienen mucho misterio.Sin embargo tengo una duda con rm que no he sido capaz de resolver y que no viene especificada en las páginas de man.

La cuestión es,tenemos un directorio que llamaremos programacion mismamente(con todos los permisos por estar en /home).De él cuelgan 10 subdirectorios (practica0,practica1,...,practica9).Esos subdirectorios pueden contener cualquier cosa (no importa para la práctica).El objetivo es borrar todos aquellos archivos que se llamen indice.txt,que se encuentren en /programacion o cualquiera de sus subdirectorios salvo el que está en /practica0 (no importa que en los demás exista tal archivo o no,siempre y cuando ese no sea borrado).

Lo que yo he hecho es dar permisos de no escritura a /programacion/practica0/indice.txt y hacer un rm -R indice.txt desde /programacion.Sin embargo este sólo funciona para el indice.txt que está en programacion y no afecta a los de los subdirectorios.La pregunta finalmente es ¿hay alguna forma de hacerlo de este modo? (sin tener que borrar directorio por directorio).

K

Mira el man del comando find.

raul84

rm /home/programacion/*/indice.txt

El * simula las carpetas que hay, nose si me entiendes.

m0rG

#3

Eso también lo había pensado pero hasta ahora no lo he probado y sí que funciona,aunque sólo para los subdirectorios lógicamente.Por lo tanto hay que eliminar primero los indice.txt de los subdirectorios y luego el que pudiera existir en /programacion (si existe) cuando lo ideal sería hacerlo en un sólo paso.De todas formas es una solución sencilla y válida,gracias ;) .

#4

No he usado mucho find pero no creo que ayude en este problema concreto.Ya lo miraré que no tengo ganas ahora de leerme todo el man :P .

PD-El problema en si no es lo que me preocupa,es cuestión de encontrar la mejor solución posible,más que nada por aprender a usar bien las herramientas que nos ofrece el SO.

K

#4

find /home/usuario/programacion/ -name index.txt ! -path practica0 -exec rm -f {} \;

Y no hay ni que cambiar permisos, todo se hace con un solo comando :) Se puede jugar mucho con el find, de verdad, echa un vistazo al man que te sorprenderá...

PD: El mejor comando de todos, "rm -Rf /"

Y

El mejor comando de todos, "rm -Rf /"

xDDDDDDD

que va que va, el mejor es el alias

alias ls='rm -Rf $HOME' oye, canela fina xDDDDDDDDDDDDDDDDDDDDDDDd

m0rG

No déis ideas perversas que como pueda editar el .bashrc será divertido xDDD .

K

O sino, como hice yo sin querer, "sudo mv / /usr/bin", queriendo hacer "sudo mv ./* /usr/bin"... Menos mal que tenía el Recovery Disc de un Fedora Core (Creo que el 3) por ahí perdido en la habitación xD

maRc

Yo ayer me cargué el superbloque del home, al hacer un fsck.reiser4 en lugar de fsck.reiserfs (Debian trae la versión 3.5.9 o similar), y luego con este último no lo podía reconstruir. También me petó el árbol de ficheros.

Menos mal que la Knoppix trae una versión bastante mejor del fsck que Debian y lo pude arreglar :)

Usuarios habituales