[CLI Wiki] page changée : filtres:exemples

noreply at asyd.net noreply at asyd.net
Fri Oct 27 12:45:13 CEST 2006


Une page dans votre Wiki a été ajoutée ou modifiée. Voici les 
détails :

Date              : 2006/10/27 12:45
Navigateur        : Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.8.0.4) Gecko/20060406 Firefox/1.5.0.4 (Debian-1.5.dfsg+1.5.0.4-1)
Adresse IP        : 82.253.200.65
Nom d'hôte        : lns-bzn-46-82-253-200-65.adsl.proxad.net
Ancienne révision : http://cli.asyd.net/home/filtres/exemples?rev=1161856696
Nouvelle révision : http://cli.asyd.net/home/filtres/exemples
Résumé            : 
Utilisateur       : mc

@@ -25,8 +25,32 @@
  find . -type f -print0 | xargs -0 sha1sum | sort -k 1,40 | uniq -D -w 40 | \
  perl -e '@f=();sub p{print "@f\n";@f=()};while(<>){chop;($h,$f)=split /  /;p if $g and $h ne $g;$g=$h;push @f,$f};p'
  </code>
  (kwisatz)
+ 
+ 3 remarques :
+   - l'indentation ameliore conciderablement la lisibilité
+   -  je pense que xargs sans -n c'est mal car tu risques facilement de faire deborder ta ligne de commande
+   - si deja tu utilises perl,  les autres filtres deviennent inutiles :
+ 
+ <code bash>
+ find . -type f -print0 |
+   xargs -n20 -0 sha1sum |
+   perl -lne '
+     $hash = substr($_,0,40);
+     $file = substr($_,42);
+     push @{ $a{$hash} } , $file;
+     END {
+       for ( values %a ) {
+         print "@$_" if $#$_;
+       }
+     }
+   '
+ </code>
+ 
+ Pour le meme nombre de lignes, on a une version pure perl en utilisant Digest::Sha1. 
+ 
+ (mc)
  
  ===== Additionner les nombres de chaque colonne d'un fichier avec num-utils =====
  voir [[filtres:autres#num-utils]]
  <code:bash>



-- 
Ce message a été généré par DokuWiki
http://cli.asyd.net/home/



More information about the Shell mailing list