====== 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