Ricerca Di Links Interrotti

Rimuovere Righe Vuote File Di Testo ◂ ▸ Numero Pseudocasuale
2008/07/11

#!/bin/bash
# broken-link.sh
# Scritto da Lee Bigelow
yahoo.com>
# Utilizzato con il consenso dell'autore.

#  Uno script di pura shell per cercare i link simbolici "morti" e
visualizzarli
#+ tra virgolette, in modo tale che possano essere trattati e dati in pasto a
#+ xargs  :)    es. broken-link.sh /unadirectory  /altradirectory | xargs rm
#
#Il seguente, tuttavia, è il metodo migliore:
#
#find "unadirectory" -type l -print0|#xargs -r0 file|#grep "broken symbolic"|
#sed -e 's/^|: *broken symbolic.*$/"/g'
#
#ma non sarebbe bash pura, come deve essere.
#Prudenza: state attenti al file di sistema /proc e a tutti i link circolari!
#############################################################################


#  Se nessun argomento viene passato allo script, la directory di ricerca
#+ directorys viene impostata alla directory corrente. Altrimenti directorys
#+ viene impostata all'argomento passato.
########################################
[ $# -eq 0 ] && directorys=`pwd` || directorys=$@

#  Implementazione della funzione verlink per cercare, nella directory
#  passatale, i file che sono link a file inesistenti, quindi visualizzarli
#+ tra virgolette. Se uno degli elementi della directory è una sottodirectory,
#+ allora anche questa viene passata alla funzione verlink.
##########
verlink () {
for elemento in $1/*; do
[ -h "$elemento" -a ! -e "$elemento" ] && echo "$elemento"
[ -d "$elemento" ] && verlink $elemento
# Naturalmente, '-h' verifica i link simbolici, '-d' le directory.
done
}

#  Invia ogni argomento passato allo script alla funzione verlink, se è una
#+ directory valida. Altrimenti viene visualizzato un messaggio d'errore e le
#+ informazioni sull'utilizzo.
#############################
for directory in $directorys; do
if [ -d $directory ]
then verlink $directory
else
echo "$directory non è una directory"
echo "Utilizzo: $0 dir1 dir2 ..."
fi
done

exit 0
Facebook Reddit Linkedin
Tags: linux bash