Recherche occurences dans 2 fichiers
Résolu
nicnictout
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
je ne sais pas si mon titre est très parlant, c'est peut être pour cela que je ne trouve pas grand chose sur le net, alors que ma demande a déjà du être traité de nombreuses fois.
Par conséquent, désolé si la question a déjà été posée.
Je m'explique, j'ai 2 fichiers textes contenant des paths vers des fichiers ou répertoires.
Le premier fichier texte contient tous les path que je dois modifier (changement de droit), ce fichier est rempli avec une commande de la sorte:
Dans mon 2ème fichier texte, j'ai plusieurs path auquel je ne dois surtout pas appliquer le changement de droit.
Comment faire pour que mon script vérifie dans le fichier 2 si le path n'est pas présent, car pour le moment il compare chaque ligne une a une.
Mon code qui marche pas:
D'avance merci pour toute aide, au pis si la solution existe mais que je n'ai pas les mots clés adéquats, pourriez vous me les donner svp :)
je ne sais pas si mon titre est très parlant, c'est peut être pour cela que je ne trouve pas grand chose sur le net, alors que ma demande a déjà du être traité de nombreuses fois.
Par conséquent, désolé si la question a déjà été posée.
Je m'explique, j'ai 2 fichiers textes contenant des paths vers des fichiers ou répertoires.
Le premier fichier texte contient tous les path que je dois modifier (changement de droit), ce fichier est rempli avec une commande de la sorte:
find <partition> -xdev \( -perm -4000 -o -perm -2000 \) -type f -print
Dans mon 2ème fichier texte, j'ai plusieurs path auquel je ne dois surtout pas appliquer le changement de droit.
Comment faire pour que mon script vérifie dans le fichier 2 si le path n'est pas présent, car pour le moment il compare chaque ligne une a une.
Mon code qui marche pas:
echo -e "/bin/mount\n/bin/ping\n/bin/ping6\n" > /tmp/exclude find $fs -xdev \( -perm -4000 -o -perm -2000 \) -type f -print > /tmp/file for file in $(cat /tmp/file) do for exclude in $(cat /tmp/exclude) do if [ $fs != $exclude ] then chmod -s $file fi done done
D'avance merci pour toute aide, au pis si la solution existe mais que je n'ai pas les mots clés adéquats, pourriez vous me les donner svp :)
2 réponses
-
Salut,
find $fs -xdev \( -perm -4000 -o -perm -2000 \) -type f -print > /tmp/file for file in $(cat /tmp/file | egrep -v '/bin/(mount|ping|ping6)') do echo "chmod -s $file" done
Si le résultat afficher te convient, restera plus qu'à virer le "echo" ;-))
-
-
-
-
Non !
find: AVERTISSEMENT : les noms de fichiers Unix usuels ne contiennent pas de barre obliques (sauf pour les chemins). Cela signifie que '-name '/bin/mount'' sera toujours évalué comme étant faux sur ce système. Vous pouvez trouver que le test '-wholename' est plus utile, ou encore celui-ci : '-samefile'. Alternativement, si vous utilisez GNU grep, vous pourriez utiliser 'find ... -print0 | grep -FzZ '/bin/mount''.
-
-
-
Salut jipicy,
décidément tu es vraiment ma roue de secours en Shell :)
Merci ca marche impec ;)