DOC:UNIX:Commandes
Recettes de cuisine & commandes utiles
Comment dire à linux qu'un disque (LUN SAN) a changé de taille ?
la commande a lancer est :
# blockdev --rereadpt /dev/sdx (x = lettre associée au LUN)
# dmesg SCSI device sdc: drive cache: write back w/ FUA sdc: detected capacity change from 42949672960 to 214748364800 sdc: sdc1 SCSI device sdc: 419430400 512-byte hdwr sectors (214748 MB) sdc: Write Protect is off sdc: Mode Sense: a5 00 10 08
# fdisk -l /dev/sdx Disk /dev/sdx: 214.7 GB, 214748364800 bytes 255 heads, 63 sectors/track, 26108 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdc1 1 26108 209712478+ 8e Linux LVM
Puis, il faut rescanner les chemins, soit avec en lancant simplement multipath soit en utilisant le démon multipathd
# multipathd -k"resize multipath mpathX"
Comment zipper (ou traiter) un ensemble de fichiers contenant des caractères blancs dans le nom ?
la commande magique :
find <nom rép> -name '*.pdf' -print | sed "s/'/\\\'/g" | xargs -I "{}" zip -9m "{}".zip "{}"
que fait cette commande ?
elle recherche à partir d'un répertoire donné tous les fichiers PDF, affiche leurs noms, protège le caractère ' ' s'il y a lieu et ZIP le fichier en compression maximale
petite variante :
find . -mtime +365 -name '*.pdf' -print | sed "s/'/\\\'/g" | xargs -I "{}" zip -9m "{}".zip "{}"
idem que précédemment, mais ne prend que les fichiers modifiés il y à plus d'un an à partir du répertoire courant
Comment supprimer les sous dossiers vides d'un répertoire
find /symlnks/io/jobs/workflows/wkftwist -depth -mindepth 2 -type d -empty -mtime +1 -print | xargs rmdir
recherche tous les sous dossiers (-type d ) vides (-empty) modifiés il y a plus d'un jour (-mtime +1) en ne prenant en compte qu'à partir du 2è niveau (-depth -mindepth 2)
Commande equivalente à un "tree size" par répertoire
ex : trouver la taille des dossiers .trash" de MisTRAL
du -k `find /mnt/nfsshare/6.0/MiSTRAL/raid -maxdepth 2 -name '*.trash' -type d ` | perl -ni -e '$i += $_ ; END {printf "%.02f Mo" , $i/1024/1024 ."\n"}'
bash
créer 100 fichiers (vides) en 1 commande
Utilisation de l'opérateur ..
:
touch {0..9}{0..9}.fic
renommage de fichiers en masse
ex : changer l'extension de fichiers : *.fic en *.txt
for file in `find -name "*.fic"`; do mv "$file" "${file/.fic/.txt}" ; done