User Tools

Site Tools


one_liners

This is an old revision of the document!


Table of Contents

One-Liners

Des lignes de commandes qui réalisent en une seule ligne des traitements complexes. (Voir aussi Shell commands)

Shell

Find

  • Trouver des fichier possédant des “SID” (SUID (4000), SGID (2000), StickyBit (1000)):
    find . -type f \( -perm -4000 -o -perm -2000 \) -exec ls {} \; 2>/dev/null
  • Réaliser une opération sur certains fichiers:
    find . -user DE05425A -exec chmod 777 {} \;
  • Lister certains repertoires:
    find $home -type d -name "*foobar" -ls
  • Lister uniquement les fichiers du répertoire (pas de récursivité):
    # Versions GNU & BSD:
    find /path -maxdepth 1 -name "plop*"
    # Autres versions
    cd /path
    find . ! -name . -prune -name "plop*"
  • Exécuter plusieurs commandes:
    find /path -maxdepth 1 -name "plop*" -exec cmd1 {} \&\& cmd2 \;
    find . -name file1.cpp -exec ls -l {} \; -exec cat {}  \;
    # Exécuter une fonction shell:
    export -f dosomething
    find . -exec bash -c 'dosomething {}' \;

Perl

Pour faire un Perl one-liner: passer les arguments n et e. En cas de traitement d'un fichier en entrée, on peut récupérer le flux via <>.

  • Lister des données immergées dans de l'xml dans différents fichiers:
    cat *20110201* | perl -ne '@talbe = split(/PRM/, <>); foreach (@talbe) {if (/.*<Identifiant>(\d{14})<\/Identifiant>.*/) {print "$1\n";};};'

Astuce SSH

Pour communiquer un fichier via SSH sans scp, sftp et consorts:

ssh user@host cat /path/file.zip > file.zip
one_liners.1314291426.txt.gz · Last modified: 2011/08/25 18:57 by ginko