una mano con script en bash

Estoy intentando hacer un pequeño script en bash que me tome el nombre directorio en el que tengo varios ficheros pdf y me renombre dichos ficheros como: directorio+nombre_fichero.pdf

Hasta ahora esto es lo que he hecho pero no funciona bien:

dummy="$(pwd | cut -d'/' -f7)"
echo "${dummy}"
for file in *.pdf; do
    echo mv \"$file\" \"${file// /dummy_file}\";
done


El nombre del directorio si que lo guarda en la variable indicada, pero a la hora de renombrarlo, no lo hace bien, ya que deja el nombre tal y como está.

P.D.: Algún libro para este verano para ampliar conocimientos de bash (ahora mismo son escasos, como vereis :D)
mmm.. veo varias cosas raras, para coger el nombre del directorio no uses cut, que dependerás de la ruta en la que estes mejor:

directory=${PWD##*/}


luego al mover estas usando la variable dummy_file y no dummy, además para escapar un caracter en bash es "\"

echo mv $file $file\ $directory


libros la verdad es que ni idea, al año me tocará hacer 2 o 3 scripts en bash y siempre tiro de internet, como ahora para sacar el direcotorio en el que estás.
Gracias por responder tan rápido.

Y si quisiera, a partir de un directorio, visitar todos los directorios que tuviera este dentro y hacer lo mismo?

He probado esto pero, de nuevo, algo hago mal
for i in $(find  -type d); do
    cd $i
    directory=${PWD##*/}
    echo "${directory}"
        for file in *.pdf; do
        echo mv $file $directory\_$file
        done
done


Entra en el primer directorio, pero luego no sale de el. He probado añadiendo cd .. después del primer for pero tampoco funciona.
mmm.. tendrás que salir del directorio en algun momemto,
cd ..


Para recorrer recursivamente los directorios puedes usar find o sino:
#!/bin/bash
recurse() {
for i in "$1"/*;do
    if [ -d "$i" ];then
        echo "dir: $i"
        recurse "$i"
    elif [ -f "$i" ]; then
        echo "file: $i"
    fi
done
}

recurse /path


o en bash 4
#!/bin/bash
shopt -s globstar
for file in /path/**
do
    echo $file
done


http://stackoverflow.com/questions/2154 ... s-commands
http://stackoverflow.com/questions/5395 ... adth-first

Lo dicho para todo esto, tira de google, https://www.google.es/?gws_rd=ssl#newwi ... ecursively
Te dejo un libro, como dice nu_kru siempre es bueno que te des una vuelta por internet.


kyo2009 escribió:Te dejo un libro, como dice nu_kru siempre es bueno que te des una vuelta por internet.




Muchas gracias. Decía lo del libro para poder leer algo sin tener que estar delante del ordenador.
5 respuestas