parts = grep "/root/backups/*"
for part in $parts
do
echo $part
rm -rf $part #delete
done
Básicamente necesito recorrer una carpeta y devolver cada elemento de la carpeta usando un script Bash.
No se puede empezar a trabajar mediante grep, aunque puede ser una forma mucho más sencilla. La primera línea es pseudocódigo puro sin pistas.
Respuesta1
Esto se puede hacer fácilmente sin bucles.
Si sólo desea deshacerse de los archivos, utilice rm:
$ rm -rf /root/backups/*
Si desea mostrar los nombres de los archivos a medida que los elimina, utilice buscar en su lugar:
$ find /root/backups -maxdepth 1 -mindepth 1 -print -exec rm -rf {} \;
La opción -max Depth le indica a Find que no descienda más de un nivel desde el punto de partida, /root/backups. La opción -min Depth le indica a Find dónde comenzar a devolver resultados, lo que efectivamente le dice a Find que ignore el punto de partida. La opción -print simplemente imprime los archivos encontrados en la pantalla. Con -exec, los {} se reemplazan con los archivos encontrados, por lo que esto llama a rm para eliminarlos.
EDITAR: eliminó un -exec innecesario por comentario
Respuesta2
Cambie el comando grep a:
para i en ``ls -bRC1 /path/*
; hacer eco $i ; habitación $i ; hecho
El -b escapará de espacios y otros caracteres que pueden provocar errores y consecuencias no deseadas con rm. -R es recursivo. -C1 es una sola columna (que puede ser redundante). Yo reconsideraría el -rf
Es posible que desee utilizar buscar en lugar de un bucle for
find /path -H -maxdepth 3 -type f -mtime +7 -exec rm {} \; -ls
Si no sabe qué significan las opciones anteriores, escriba man find
.
Respuesta3
grep -l te dará solo los nombres de los archivos
partes = grep -rl ....
Respuesta4
Quiere una lista de nombres de archivos en un directorio determinado. Hay un programa que hace esto y te dará vergüenza leer su nombre: ls
. ¡Eso es todo lo que hace! Quiere un listado recursivo que incluya archivos en subdirectorios, así que utilice ls -R
. Puedes poner el resultado de eso en una variable en tu script y hacer lo que quieras con él.