====== Linux ====== ===== Gestion des fichiers et répertoires ===== \\ ==== Trouver les répertoires les plus remplis ==== find ./* -prune -type d -exec du -sk {} \; \\ ==== récupérer le dernier fichier d'une liste ==== ls -l | tail -1 \\ ==== Se positionner dans le répertoire du script courant lors de son exécution ==== //positionner les 2 lignes suivantes en début de script// SCRIPT_DIR=`echo $0 | awk -F "/" '{if($NF!=$0){print substr($0,0,length($0)-length($NF)-1)}else{print "."}}'` cd $SCRIPT_DIR \\ ==== Trier les repertoires par taille ==== du . | sort -n -r | head -n 50 \\ ==== Trier les fichiers par taille ==== du -a . | sort -n -r | head -n 50 \\ ==== Appliquer des droits aux dossiers seulement ==== find . -type d -exec chmod 755 {} \; \\ ==== Changer le propriétaire de plusieurs fichiers d'un coup ==== find -uid -exec chown wwwrun:www {} + \\ ==== Taille en ko d'un répertoire ==== du -sk $REP | awk '{print $2,": ",$1, "ko"}' \\ ==== Taille en ko des sous-répertoires du répertoire courant ==== for REP in `ls -l | grep '^d'` do du -sk $REP | awk '{print $2,": ",$1, "ko"}' done \\ ==== Découpage d'un fichier avec chemin relatif ou absolu ==== ^ Nom de fichier | ''basename'' | ^ Chemin d'acces au fichier | ''dirname'' | \\ ==== Effacer tous les fichiers d'une certaine date ==== for FIC in `ls -lrt | grep "^-" | grep " ao.t 24 " | awk '{print $9}'` do rm -rf ${FIC} done -- OU -- ls -lrt | grep "f.vr 4" | sed -e 's/.* //' | xargs rm \\ ==== Effacer tous les fichiers de plus de XX jours ==== find ${REP}/ -name "*.gz" -mtime +7 -exec rm {} \; \\ ==== Renommer une série de fichiers ==== exemple : renommer IMG_xxxx.jpg en YYYYMMJJ_photo_xxxx.jpg ls IMG_*.jpg | sed 's:IMG_\(.*\).jpg:mv "&" "`date +Ymd`_photo_\1":g' | ksh exemple : déplacer et renommer tous les fichiers contenant TEST en PREFIXE_*test* + utilisation de variables pour les répertoires export REPSRC=/tmp/SOURCE export REPDST=/tmd/DESTINATION find ${REPSRC} -name *TEST* | sed "s:${REPSRC}/\(.*\):mv & ${REPDST}/PREFIXE_\1:g" | ksh \\ ==== Mettre les extensions de fichiers en minuscules ==== ls *.CBL | sed 's/\(.*\)\.CBL/mv \1\.CBL \1\.cbl/g' | ksh \\ ==== Effectuer des remplacements dans un fichier ==== sed 's///g' -i \\ ==== Remplacement global dans plusieurs fichiers d'une même date ==== Avec recuperation du fichier d'origine si plantage : for FIC in `ls -lrt | grep " Dec 14 " | grep "" | awk '{print $9}'` do mv $FIC $FIC.old print -n Remplacement dans $FIC... sed 's///g' < $FIC.old > $FIC if (( $? == 0 )) then print OK rm -f $FIC.old else print KO mv $FIC.old $FIC fi done \\ ==== Remplacement global dans plusieurs fichiers avec find ==== for FIC in `find . -type f` do echo -e -n "Remplacement dans $FIC... " sed 's/function blabla/function blabla/g' -i $FIC if (( $? == 0 )) then echo OK else echo KO fi done