find_long_filenames.sh
Nombre: find_long_filenames.sh
Autor: Fidel Ramos (Haplo)
Origen: original.
Lenguaje: Sh/Bash.
Licencia: GPL.
Propósito: encontrar todos los archivos en un directorio dado cuyo nombre de fichero supere cierta longitud. El uso principal es localizar ficheros que superan la restricción de 64/103 caracteres de los sistemas de ficheros Joliet de CD/DVD, dado que si se grabasen el nombre de fichero quedaría truncado.
Dependencias: ninguna especial.
Código:
#!/bin/sh
#
# Script made by Fidel Ramos (aka Haplo)
#
# Finds files in a given directory (recursively) whose filenames
# are longer than 103 characters (Joliet filename length limit)
# or any other given length.
#
# Use at your own risk. Distributes under the GNU GPL license.
if [ -z $1 ]
then
echo "Usage: `basename $0` dir [charlimit]"
exit 1
else
if [ -z $2 ]
then
# Joliet filename length limit by default
MAXCHARS=103
else
MAXCHARS=$2
fi
IFS='
'
for i in `find "$1" -type f -print`
do
if [ `echo $(basename $i) | wc -c` -gt $MAXCHARS ]
then
echo "$i"
fi
done
fi
Ejemplos de uso:
# por defecto se buscan ficheros de más de 103 caracteres
find_long_filenames /ruta/directorio
# busca ficheros de más de 64 caracteres
find_long_filenames /ruta/directorio 64
Comentarios: por defecto, si no se especifica un segundo argumento, se buscan ficheros con nombres de más de 103 caracteres (límite máximo especial de Joliet).
No se tiene en cuenta los directorios para el cálculo de la longitud del nombre de fichero. Por ejemplo en una ruta /ruta/directorio/fichero.ext sólo se tiene en cuenta fichero.ext