Autor Tema: [Solved] Automatizacion mover archivos a directorios en Linux  (Leído 2330 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Kyon_Kun

  • The Communiter-
  • *
  • Mensajes: 1873
    • ImperioMoe un blog de figuras de anime en Español
Perdon pero soy NOOB en batch scripting

El ejemplo es mero raro pero la idea es lo importante tengo por ejemplo los directorios

perro
gato
nube
cielo

por otro lado en otro directorio estan generandose archivos con titulos como:

bonito perro negro.txt
feo perro blanco.txt
123 perro azul.txt
mi gato 1.txt
tu gato 2.txt
su gato 3.txt
1 nube negra.txt
2 nube negra.txt
5 nube blanca.txt
cielo azul.txt
cielo azul 2.txt
etc....

necesito correr un script que cada cierto tiempo (o manualmente ejecutarlo)  que busque en el directorio X por archivos que contenga el nombre de alguno de los directorios y los mueva al directorio respectivo sin cambiarle el nombre. Alguien buzo en batch script que sepa como hacerlo.

« Última Modificación: junio 25, 2016, 10:07:33 am por Kyon_Kun »

Conectado g00mba

  • The Communiter-
  • *
  • Mensajes: 14583
  • SOMOS LEGION
    • ALABADO SEA MONESVOL
Re:Automatizacion mover archivos a directorios en Linux
« Respuesta #1 : junio 24, 2016, 07:30:14 pm »

Código: [Seleccionar]
for f in *.pdf; do
    name=`echo "$f"|sed 's/ -.*//'`
    letter=`echo "$name"|cut -c1`
    dir="DestinationDirectory/$letter/$name"
    mkdir -p "$dir"
    mv "$f" "$dir"
done
modificalo a tu gusto.
sacado de
http://stackoverflow.com/questions/1251938/move-files-to-directories-based-on-first-part-of-filename


Desconectado rdoggsv

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 6531
  • "Once you go arch , u never go back"
    • SV CommunitY
Re:Automatizacion mover archivos a directorios en Linux
« Respuesta #2 : junio 24, 2016, 08:53:55 pm »
El comando mv se usa para mover archivos, me imagino que es ejemplo de inicios de clases en shell scripting, no se si te lo piden manual o con bucles, etc.

Solamente tenes que usar mv con el nombre que deseas mover al directorio que lo deseas mover.

Citar
perro
gato
nube
cielo

por otro lado en otro directorio estan generandose archivos con titulos como:

bonito perro negro.txt
feo perro blanco.txt
123 perro azul.txt
mi gato 1.txt
tu gato 2.txt
su gato 3.txt
1 nube negra.txt
2 nube negra.txt
5 nube blanca.txt
cielo azul.txt
cielo azul 2.txt

Lo podes hacer fácil con:

Código: [Seleccionar]
#!/bin/bash
mv directorio_con_archivos/*gato* gato/*
mv directorio_con_archivos/*perro* perro/*
mv directorio_con_archivos/*nube* nube/*
mv directorio_con_archivos/*cielo* cielo/*

Ejemplo con un bucle automatizado

Código: [Seleccionar]
~/ejemplo_bash$ cat script.sh
#!/bin/bash
for i in "gato" "perro" "nube" "cielo"
do
  mv directorio_con_archivos/*$i* $i/
done

Ejemplo de ejecución y contenidos de folders:

Código: [Seleccionar]
svcommunity@v3:~/ejemplo_bash$ mkdir gato
svcommunity@v3:~/ejemplo_bash$ mkdir perro
svcommunity@v3:~/ejemplo_bash$ mkdir nube
svcommunity@v3:~/ejemplo_bash$ mkdir cielo
svcommunity@v3:~/ejemplo_bash$ cd directorio_con_archivos/
svcommunity@v3:~/ejemplo_bash/directorio_con_archivos$ touch bonitoperronegro.txt
svcommunity@v3:~/ejemplo_bash/directorio_con_archivos$ touch feoperroblanco.txt
svcommunity@v3:~/ejemplo_bash/directorio_con_archivos$ touch 123perroazul.txt
svcommunity@v3:~/ejemplo_bash/directorio_con_archivos$ touch migato1.txt
svcommunity@v3:~/ejemplo_bash/directorio_con_archivos$ touch tugato2.txt
svcommunity@v3:~/ejemplo_bash/directorio_con_archivos$ touch sugato3.txt
svcommunity@v3:~/ejemplo_bash/directorio_con_archivos$ touch 1nubenegra.txt
svcommunity@v3:~/ejemplo_bash/directorio_con_archivos$ touch 2nubenegra.txt
svcommunity@v3:~/ejemplo_bash/directorio_con_archivos$ touch 5nubeblanca.txt
svcommunity@v3:~/ejemplo_bash/directorio_con_archivos$ touch cieloazul.txt
svcommunity@v3:~/ejemplo_bash/directorio_con_archivos$ touch cieloazul2.txt
svcommunity@v3:~/ejemplo_bash/directorio_con_archivos$ ls
123perroazul.txt  2nubenegra.txt   bonitoperronegro.txt  cieloazul2.txt      migato1.txt  tugato2.txt
1nubenegra.txt    5nubeblanca.txt  cieloazul.txt         feoperroblanco.txt  sugato3.txt
svcommunity@v3:~/ejemplo_bash/directorio_con_archivos$ cd ..
svcommunity@v3:~/ejemplo_bash$ find ./
./
./nube
./cielo
./directorio_con_archivos
./directorio_con_archivos/sugato3.txt
./directorio_con_archivos/migato1.txt
./directorio_con_archivos/2nubenegra.txt
./directorio_con_archivos/5nubeblanca.txt
./directorio_con_archivos/tugato2.txt
./directorio_con_archivos/cieloazul.txt
./directorio_con_archivos/cieloazul2.txt
./directorio_con_archivos/bonitoperronegro.txt
./directorio_con_archivos/123perroazul.txt
./directorio_con_archivos/feoperroblanco.txt
./directorio_con_archivos/1nubenegra.txt
./gato
./perro
./script.sh
svcommunity@v3:~/ejemplo_bash$ bash script.sh
svcommunity@v3:~/ejemplo_bash$ find ./
./
./nube
./nube/2nubenegra.txt
./nube/5nubeblanca.txt
./nube/1nubenegra.txt
./cielo
./cielo/cieloazul.txt
./cielo/cieloazul2.txt
./directorio_con_archivos
./gato
./gato/sugato3.txt
./gato/migato1.txt
./gato/tugato2.txt
./perro
./perro/bonitoperronegro.txt
./perro/123perroazul.txt
./perro/feoperroblanco.txt
./script.sh
svcommunity@v3:~/ejemplo_bash$

Ahora si lo queres automatizar lo metes en un cronjob, para que se ejecute cada cierto tiempo que le configures.

Desconectado Kyon_Kun

  • The Communiter-
  • *
  • Mensajes: 1873
    • ImperioMoe un blog de figuras de anime en Español
Re:Automatizacion mover archivos a directorios en Linux
« Respuesta #3 : junio 25, 2016, 10:07:15 am »
Gracias por las respuestas era mas facil de lo que pensaba y exactamente lo que buscaba