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).
# 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 "{}" \;
# 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
# 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/' "{}" \;
# 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
#!/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 "{}" \;