Flash Notes
Commandes - Fichiers dont aucune ligne ne correspond à une expression régulière
• Comment lister les fichiers dont aucune ligne ne correspond à une expression régulière donnée ?
Solution
Supprimer de la liste des fichiers les noms de ceux dont au moins une ligne correspond à l'expression régulière
Programme
#!/bin/sh
#
# Recherche des fichiers ne contenant pas une expression reguliere
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# fmissre : File MISSing Regular Expression
#
TMP_LISTE1="/tmp/fmisstr_liste1.$$"
TMP_LISTE2="/tmp/fmisstr_liste2.$$"
if [ "$2" = "" ]; then
echo "Usage: $0 expression_reguliere fichier [fichier ...]"
exit 1
fi
RE="$1"
shift
# Constitution de la liste complete des fichiers a examiner
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ls -1 "$@" | sort > "$TMP_LISTE1"
# Constitution de la liste des fichiers contenant l'expression
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
grep -l "$RE" "$@" | sort > "$TMP_LISTE2"
# Affichage de la liste des fichiers ne contenant pas l'expression
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
comm -3 "$TMP_LISTE1" "$TMP_LISTE2"
# Effacement des fichiers temporaires
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rm -f "$TMP_LISTE1" "$TMP_LISTE2"
Exemple 1
$ fmissre Commandes page_*_FR.html page_000000_FR.html page_000004_FR.html page_000005_FR.html page_000006_FR.html page_000009_FR.html page_000012_FR.html page_000013_FR.html