Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: WaAYa HaCK en 22 Febrero 2012, 20:14 pm



Título: [BASH] Comprobar si existe archivo, para evitar reemplazarlo
Publicado por: WaAYa HaCK en 22 Febrero 2012, 20:14 pm
Hola! Tengo una simple línea en un script que hace esto:
Código
  1. #!/bin/sh
  2. mencoder out.ogg -o video.avi -ovc lavc -oac mp3lame
Me gustaría que se guardara en el directorio del script, que compruebe si en el directorio de guardado ya existe el video.avi, que renombre el video.avi recién creado como video_1.avi o similar, y que lo mueva al directorio de guardado.

Supongo que será algo de ls y grep, pero no tengo ni idea...
¿Alguien me dice qué tengo que hacer?

Gracias!


Título: Re: [BASH] Comprobar si existe archivo, para evitar reemplazarlo
Publicado por: leogtz en 24 Febrero 2012, 23:30 pm
Hice una pequeña función que calcula cómo hay que guardarse en el directorio "guardado"

Código
  1. function getNextNameFile() {
  2. [ -e "./guardado/video.avi" ] && {
  3. valor=$(ls -1 guardado | grep -E "^video_[0-9]*.*$" | sed -s "s/^video_\([0-9]*\).*/\1/g" | tail -n1)
  4. [ -z "$valor" ] && {
  5. result=1
  6. } || result=$((valor + 1))
  7.  
  8. } || result=0
  9. }
  10.  
  11. getNextNameFile;
  12. if [ $result = 0 ]
  13. then
  14. mencoder out.ogg -o guardado/video.avi -ovc lavc -oac mp3lame
  15. else
  16. mencoder out.ogg -o guardado/video_${result}.avi -ovc lavc -oac mp3lame
  17. fi
  18.  

Este script checa primero si en la carpeta de guardado existe "video.avi", si existe calcula el siguiente, es decir, video_n.avi, sino existe lo guarda como video.avi.

Saludos.


Título: Re: [BASH] Comprobar si existe archivo, para evitar reemplazarlo
Publicado por: WaAYa HaCK en 25 Febrero 2012, 00:41 am
Muchas gracias! Has usado RegEx, ¿verdad?


Título: Re: [BASH] Comprobar si existe archivo, para evitar reemplazarlo
Publicado por: leogtz en 25 Febrero 2012, 00:42 am
Sí, un poco con grep y sed.