Christophe Le Bot

Pratique de la conception numérique

Les commandes shell qui sauvent

Page mise à jour le 12 septembre 2013.

Lister tous les fichiers d’un dossier et de ses sous-dossiers

ls -lR

Obtenir l’espace disque utilisé par des dossiers

Se placer dans le dossier parent et entrer :

du -h --max-depth=1

--max-depth indique la profondeur de l’analyse. La valeur 1 permet de ne lister que les dossiers et fichiers placés dans le dossier courant.

Modifier en une seule passe des droits d’accès sur un ensemble de dossiers ou de fichiers

Pour modifier les droits d’accès sur tous les dossiers placés dans le chemin courant :

find . -type d -print0 | xargs -0 chmod 755

Pour faire de même avec les fichiers seulement :

find . -type f -print0 | xargs -0 chmod 644

Très utile quand les dossiers et les fichiers doivent avoir des droits d’accès différents !

Rechercher une chaîne dans des fichiers

Pour lister les fichiers qui contiennent une chaîne :

find . | xargs grep 'ma chaine'

L’analyse est récursive, la commande parcourt donc un dossier (ici le dossier courant) et ses sous-dossiers.

On peut filtrer le résultat sur certaines extensions de fichiers :

find . -type f -name '*.php' -print0 | xargs -0 grep 'ma chaine'

-type f précise que l’on effectue l’analyse sur les noms des fichiers, ce qui exclut les noms des dossiers. -print0 et xargs -0 évitent quelques surprises avec les noms de fichiers comportant des caractères spéciaux (en particulier les espaces).

On peut également exclure certaines extensions de l’analyse :

find . -type f -name '*.php' ! -name '*.phtml' -print0 | xargs -0 grep 'ma chaine'

Autre possibilité :

grep -lir "ma chaine" *

Purger un dossier contenant d’anciens fichiers

find . -mtime +5 | xargs rm -f

+5 détermine le nombre de jours (ici tous les fichiers datant de plus de 5 jours)

Purger les dossiers .svn

find . -type d -name '.svn' | xargs rm -rf

Obtenir le type d’encodage d’un fichier

file -i fichier.txt

Lister les fichiers encodés en UTF-8 avec BOM

grep -rl $'\xEF\xBB\xBF' .

Convertir un fichier vers UTF-8

Très utile pour récupérer les données d’une vieille base MySQL !

iconv -c -f latin1 -t utf-8 monfichier.txt > monfichier-utf8.txt

Vérifier la compatibilité PHP5 d’un code source PHP4

find /source/repertoire -name \*.php | xargs -n1 /chemin/vers/php -ddisplay_errors=1 -derror_reporting=8191 -l

Mesurer rapidement les performances d’un serveur web Apache

ab -kc 10 -t 30 http://127.0.0.1/

3 commentaires

Auteur
Seb
Date de publication
5 août 2008 à 16h54

On peut remplacer
find . | xargs grep ‘ma chaine’

par un
grep -Rn ‘ma chaine’ .

l’option -R permettant de « grepper » récursivement
et l’option -n affichera les numéros de lignes des occurrences trouvées dans chaque fichier


Auteur
foisse
Date de publication
14 février 2010 à 4h15

Excellent la commande pour mesurer les perfs d’apache !

Sinon pour ceux qui cherchent une intro complète à bash :
http://aral.iut-rodez.fr/fr/sanchis/enseignement/bash/index.html


Auteur
Christophe
Date de publication
14 février 2010 à 11h23

@foisse

Merci pour le lien. Ce document est excellent !


* Informations obligatoires