
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 preguntar 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
