SH boucle : lecture et copie de fichiers
Fermé
vitcz
Messages postés
46
Date d'inscription
mardi 22 juillet 2008
Statut
Membre
Dernière intervention
8 septembre 2008
-
28 juil. 2008 à 16:31
vitcz Messages postés 46 Date d'inscription mardi 22 juillet 2008 Statut Membre Dernière intervention 8 septembre 2008 - 30 juil. 2008 à 14:36
vitcz Messages postés 46 Date d'inscription mardi 22 juillet 2008 Statut Membre Dernière intervention 8 septembre 2008 - 30 juil. 2008 à 14:36
A voir également:
- SH boucle : lecture et copie de fichiers
- Boucle cmd - Forum Programmation
- Télé samsung s'éteint et se rallume en boucle - Forum Téléviseurs
- Fichier .sh - Astuces et Solutions
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
9 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
28 juil. 2008 à 18:03
28 juil. 2008 à 18:03
Salut,
> c'est une redirection en écriture
2 c'est le descripteur de fichier pour la sortie d'erreur
/dev/null est un pseudo périphérique spécial vers lequel on peut rediriger un contenu qu'on ne veut pas afficher à l'écran (une sorte de trou noir)
Voici une exemple
Tu vois bien qu'il y a 3 lines qui ne m'intéressent pas vraiment. Ce sont des messages d'erreurs.
En utilisant une redirection vers /dev/null de ces erreurs donc de la sortie d'errer standard qui est 2 j'obtiens l'affichage sans erreurs
A savoir que tu peux par exemple capturer seulement les erreurs ou afficher le résultat sans erreurs à l'écran et enregistrer les erreurs dans un fichier pour un traitement ultérieur, etc.
> c'est une redirection en écriture
2 c'est le descripteur de fichier pour la sortie d'erreur
/dev/null est un pseudo périphérique spécial vers lequel on peut rediriger un contenu qu'on ne veut pas afficher à l'écran (une sorte de trou noir)
Voici une exemple
lami20j@debian:~$ find /etc -name '*active*' find: /etc/ssl/private: Permission non accordée /etc/selinux/refpolicy-targeted/modules/active find: /etc/selinux/refpolicy-targeted/modules/active: Permission non accordée find: /etc/selinux/refpolicy-targeted/modules/previous: Permission non accordée
Tu vois bien qu'il y a 3 lines qui ne m'intéressent pas vraiment. Ce sont des messages d'erreurs.
En utilisant une redirection vers /dev/null de ces erreurs donc de la sortie d'errer standard qui est 2 j'obtiens l'affichage sans erreurs
lami20j@debian:~$ find /etc -name '*active*' 2>/dev/null /etc/selinux/refpolicy-targeted/modules/active
A savoir que tu peux par exemple capturer seulement les erreurs ou afficher le résultat sans erreurs à l'écran et enregistrer les erreurs dans un fichier pour un traitement ultérieur, etc.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
28 juil. 2008 à 17:00
28 juil. 2008 à 17:00
Salut,
$ tree . |-- liste.txt |-- repertoire1 | |-- fichier1.txt | |-- fichier2.txt | |-- fichier3.txt | |-- fichier4.txt | |-- fichier5.txt | |-- fichier6.txt | |-- fichier7.txt | |-- fichier8.txt | `-- fichier9.txt `-- repertoire2 2 directories, 10 files $ cat liste.txt fichier1.txt fichier3.txt fichier5.txt fichier7.txt fichier9.txt fichier18.txt $ while read line; do mv repertoire1/${line} repertoire2/${line} 2>/dev/null; done < liste.txt $ tree . |-- liste.txt |-- repertoire1 | |-- fichier2.txt | |-- fichier4.txt | |-- fichier6.txt | `-- fichier8.txt `-- repertoire2 |-- fichier1.txt |-- fichier3.txt |-- fichier5.txt |-- fichier7.txt `-- fichier9.txt 2 directories, 10 files $;-))
vitcz
Messages postés
46
Date d'inscription
mardi 22 juillet 2008
Statut
Membre
Dernière intervention
8 septembre 2008
3
28 juil. 2008 à 17:42
28 juil. 2008 à 17:42
Merci JIPICY ç a m'a l'air très bien,
je test ça tout de suite, pourrais tu m'expliquer ce petit morceau de code stp : 2>/dev/null;
merci
je test ça tout de suite, pourrais tu m'expliquer ce petit morceau de code stp : 2>/dev/null;
merci
vitcz
Messages postés
46
Date d'inscription
mardi 22 juillet 2008
Statut
Membre
Dernière intervention
8 septembre 2008
3
28 juil. 2008 à 18:11
28 juil. 2008 à 18:11
OK, c'est très intéressant.
Effectivement, je ne vois apparaître que les noms de fichiers qui ont réellement été transférées.
Pour ce qui est de la syntaxe de Jipicy, il faut que le fichier de txt qui comprend la liste des fichiers a transférer comprenne une dernière ligne vide sinon le dernier fichier listé n'est transféré.
à moins que j'ai mal intégré la fonction... ;)
Effectivement, je ne vois apparaître que les noms de fichiers qui ont réellement été transférées.
Pour ce qui est de la syntaxe de Jipicy, il faut que le fichier de txt qui comprend la liste des fichiers a transférer comprenne une dernière ligne vide sinon le dernier fichier listé n'est transféré.
à moins que j'ai mal intégré la fonction... ;)
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
28 juil. 2008 à 18:18
28 juil. 2008 à 18:18
Non ce n'est pas nécessaire, d'ailleurs dans mon exemple (chez moi) le fichier "liste.txt" n'a pas de ligne vide à la fin. Si elle apparait effectivement dans la mise en page, c'est uniquement à des fins de meilleure lisibilité, mais qui j'avoue peut parfois prêter à confusion ;-(
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
vitcz
Messages postés
46
Date d'inscription
mardi 22 juillet 2008
Statut
Membre
Dernière intervention
8 septembre 2008
3
29 juil. 2008 à 11:26
29 juil. 2008 à 11:26
Bonjour,
Un problème apparait lorsque le fichier texte contient une ligne vide. Dans ce cas, le repertoire1 est déplacé dans le repertoire2. Ce problème survient avec toutes les yntaxte que j'ai essayé, aussi je cherche un moyen de supprimer les sauts de ligne dans mon fichier texte, je pense à un cat liste.txt | sed -e /n | sed ''<liste.txt
Bien sur cette syntaxe est incorrecte. :(
Un problème apparait lorsque le fichier texte contient une ligne vide. Dans ce cas, le repertoire1 est déplacé dans le repertoire2. Ce problème survient avec toutes les yntaxte que j'ai essayé, aussi je cherche un moyen de supprimer les sauts de ligne dans mon fichier texte, je pense à un cat liste.txt | sed -e /n | sed ''<liste.txt
Bien sur cette syntaxe est incorrecte. :(
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
29 juil. 2008 à 12:11
29 juil. 2008 à 12:11
Essaye ça :
sed '${/^$/d}' liste.txt > nexliste.txt;-))
vitcz
Messages postés
46
Date d'inscription
mardi 22 juillet 2008
Statut
Membre
Dernière intervention
8 septembre 2008
3
29 juil. 2008 à 14:26
29 juil. 2008 à 14:26
merci jipicy, hélas cela ne marche pas, le fichier nexlist.txt généré comprend les mêmes sauts de lignes.
En revanche avec cette syntaxe :
egrep -v '^(#| *$)' maliste | while read line; do mv rep1/$line rep2/$line ;done
cela fonctionne plutot pas mal. Merci pour ton aide, cela m'a donnée bcp d'idées.
En revanche avec cette syntaxe :
egrep -v '^(#| *$)' maliste | while read line; do mv rep1/$line rep2/$line ;done
cela fonctionne plutot pas mal. Merci pour ton aide, cela m'a donnée bcp d'idées.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
29 juil. 2008 à 15:26
29 juil. 2008 à 15:26
Oups j'avais cru comprendre que tu ne voulais effacer que la dernière ligne si et seulement si cette dernière était vide...
Désolé ;-(
Désolé ;-(
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
29 juil. 2008 à 15:19
29 juil. 2008 à 15:19
Salut,
106485010510997108
perl -pi.orig -e 'print unless /^$/' fichier.txtou
egrep -v '^$' fichier.txt >resultat.txt--
106485010510997108
vitcz
Messages postés
46
Date d'inscription
mardi 22 juillet 2008
Statut
Membre
Dernière intervention
8 septembre 2008
3
30 juil. 2008 à 14:36
30 juil. 2008 à 14:36
merci beaucoup, ça tourne impec.