¿Cómo mover/borrar un número dado de archivos?

Dudas y comentarios relacionadas con paquetes o programas específicos (obtención, uso, actualizaciones, versiones, problemas de instalación, etc.)

Moderadores: doc, Deckon

Responder
Avatar de Usuario
cocoyol
Forista Nuevo
Forista Nuevo
Mensajes: 2
Registrado: Sab Ago 29, 2009 7:00 am

¿Cómo mover/borrar un número dado de archivos?

Mensaje por cocoyol » Sab Ago 29, 2009 5:17 pm

Hola, son nuevo en éste foro y principiante en Linux, el probemilla puede tener una solución sencilla pero no tengo ni idea de como hacer el script con los que conozco hasta ahora, espero me puedan ayudar.

Tengo exceso de archvos (18251 generados por un programa) todos dentro de una sola carpeta y lo que quiero es: mover exactamente 5000 archivos (de entre los 18251), sin importar su nombre, tamaño, tipo o el orden en que se encuentren a otra carpeta.

Gracias.
Avatar de Usuario
cocoyol
Forista Nuevo
Forista Nuevo
Mensajes: 2
Registrado: Sab Ago 29, 2009 7:00 am

Re: ¿Cómo mover/borrar un número dado de archivos?

Mensaje por cocoyol » Lun Ago 31, 2009 9:29 pm

Sabía que no era muy difícil, hice un script que resolvió mi problema en particular

Código: Seleccionar todo

numero_de_archivos=`expr 5000`
directorio="... ... Directorio destino ... ... "
i =`expr 0`

for j in `ls` ; do
   mv $j $directorio
   if [ `expr $i` -eq $numero_de_archivos ]; then
     break
   fi
   i=`expr $i + 1`
done


lo muestro aquí, dada la dificultad de encontrar esto en internet, tal vez le sirva a otros.
El entorno gráfico genome se comporta muy lento ante tal cantidad de archivos en una sola carpeta, y me era imposible hacer ahí los movimientos.
¿Existe una manera de hacerlo más fácil y limpiamente?, me interesaría saber como.

Gracias de todas maneras.
Avatar de Usuario
neurus
Forista Legendario
Forista Legendario
Mensajes: 1801
Registrado: Dom Oct 10, 2004 7:00 am

Re: ¿Cómo mover/borrar un número dado de archivos?

Mensaje por neurus » Mar Sep 01, 2009 12:26 am

Yo tuve que hacer algo parecido, hace un tiempo, porque la cantidad de archivos era excesiva para un simple rm -rf * (bash respondía: "demasiados argumentos") .

En mi caso, no sé a priori cuántos archivos son, por lo que debo contarlos. Y los archivos están numerados, por lo que sólo necesito saber la extensión.

No es exactamente la misma tarea, pero puede que te sirva de ejemplo.

Saludos.

#!/bin/bash
# La extensión puede ser .*

read -p "extensión a borrar: " EXT

# Directorio NO requiere la ruta con la última barra. Puede ser la ruta absoluta o relativa.
# ejemplos: /opt/miprograma o ../output

read -p "directorio que contiene los archivos: " DIR

# esto que envío a un archivo se puede enviar a una variable con tempfile, pero me
# gusta tener el resultado a mano por si luego debo consultarlo
# Además, a diferencia de tu script, yo no sé a priori cuántos archivos son, por eso, los cuento.

ls -l $DIR/*$EXT|wc -l> .cant
CANT=`cat .cant`

for i in `seq 1 $CANT`; do rm -rf $DIR/$i$EXT && echo borrado $i$EXT; done

# si lo dejas tal como está, puedes querer borrar el archivo .cant
rm .cant

exit
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje