Inicio

Guiones (scripts) para renombrar ficheros y modificar sus permisos

Cuando recibimos ficheros puede que tengan nombres con espacios, permisos inadecuados, mayúsculas, eñes, acentos. etc. A mi particularmente me gustan los nombres sin espacios, todo en minúsculas y con permisos 755 (rwxr-xr-x) para los directorios y 644 (rw-r--r--) para los ficheros. Los siguientes guiones resuelven el problema pues funcionan recursivamente. Son el resultado de codeguntar en los foros, de una noticia de bulma y de leer los man. Se pueden poner en /usr/local/bin y darles permiso de ejecución (755). No obstante ten cuidado y no los uses a lo loco porque al cambiar el nombre a un fichero, puede que sea el enlace de una página html, o puede que le quites los permisos de ejecución a un programa, etc. Imagínate si estás como root y ejecutas permisos en /bin. No podrías volver a ejecutar chmod, puesto que le habrías quitado el permiso de ejecución.

Estos guiones  y los de la página Trucos, todos juntos (2,6 Kib).

Permisos

# Cambiamos recursivamente los permisos de los directorios a 755 y de los ficheros a 644

#!/bin/bash

find -type d -exec chmod 755 "{}" \;
find -type f -exec chmod 644 "{}" \;

Espacios

# Renombramos recursivamente los espacios de los archivos a guion bajo

#!/bin/bash

find . -name '* *' | sort | while read FILE

do
NEWFILE=`echo ${FILE} | sed 's/ /_/g;'`
mv "${FILE}" ${NEWFILE}
echo ${NEWFILE}
done

Minúsculas

# Cambiamos recursivamente de mayusculas a minusculas

#!/bin/bash

find -type d -exec rename 'tr/A-Z/a-z/' "{}" \;
find -type f -exec rename 'tr/A-Z/a-z/' "{}" \;

Acentos y eñes


# Cambiamos recursivamente a n, N y a las vocales sin acentuar (en minusculas y mayusculas)

#!/bin/bash

find . -name '*ñ*' | sort | while read FILE
do
NEWFILE=`echo ${FILE} | sed 's/ñ/n/g;'`
mv "${FILE}" ${NEWFILE}
done
find . -name '*Ñ*' | sort | while read FILE
do
NEWFILE=`echo ${FILE} | sed 's/Ñ/N/g;'`
mv "${FILE}" ${NEWFILE}
done

find . -name '*á*' | sort | while read FILE
do
NEWFILE=`echo ${FILE} | sed 's/á/a/g;'`
mv "${FILE}" ${NEWFILE}
done

find . -name '*Á*' | sort | while read FILE
do
NEWFILE=`echo ${FILE} | sed 's/Á/A/g;'`
mv "${FILE}" ${NEWFILE}
done

find . -name '*é*' | sort | while read FILE
do
NEWFILE=`echo ${FILE} | sed 's/é/e/g;'`
mv "${FILE}" ${NEWFILE}
done

find . -name '*É*' | sort | while read FILE
do
NEWFILE=`echo ${FILE} | sed 's/É/E/g;'`
mv "${FILE}" ${NEWFILE}
done

find . -name '*í*' | sort | while read FILE
do
NEWFILE=`echo ${FILE} | sed 's/í/i/g;'`
mv "${FILE}" ${NEWFILE}
done

find . -name '*Í*' | sort | while read FILE
do
NEWFILE=`echo ${FILE} | sed 's/Í/I/g;'`
mv "${FILE}" ${NEWFILE}
done

find . -name '*ó*' | sort | while read FILE
do
NEWFILE=`echo ${FILE} | sed 's/ó/o/g;'`
mv "${FILE}" ${NEWFILE}
done

find . -name '*Ó*' | sort | while read FILE
do
NEWFILE=`echo ${FILE} | sed 's/Ó/O/g;'`
mv "${FILE}" ${NEWFILE}
done

find . -name '*ú*' | sort | while read FILE
do
NEWFILE=`echo ${FILE} | sed 's/ú/u/g;'`
mv "${FILE}" ${NEWFILE}
done

find . -name '*Ú*' | sort | while read FILE
do
NEWFILE=`echo ${FILE} | sed 's/Ú/U/g;'`
mv "${FILE}" ${NEWFILE}
done

Reducir calidad de las fotos

#!/bin/bash
#el script recibe la calidad como un argumento
if [ $# -lt 1 ]; then
echo "Necesitas pasar la calidad, por ejemplo:
$reducir_calidad 60."
exit 1
fi
# el punto significa que busca en el directorio actual y recursivamente.
# el nombre esta entre comillas sencillas para que lo interprete bien
# {} es el resultado de find y las comillas son para que no expanda los nombre
s # $1 es el unico argumento que recibe el script
# \; es una secuencia de escape
find . -name '*.jpg' -exec convert "{}" -quality $1 "{}" \;

Inicio

Valid XHTML 1.0 Strict