Greg

1100111011100100110010101100111

Étiquette : linux

Corriger les dates des fichiers

Les dates système de vos fichiers photos ne correspondent pas aux dates EXIF ? Vous souhaitez modifier la date de création d’un fichier à partir de la date figurant dans le nom du fichier ? Deux outils sont là pour ça !

Copier la date EXIF vers la date système

Premièrement, il faut installer l’outil nommé jhead. Sur Mac :

$ brew install jhead

Pour Windows, le plus simple est de se référer à la documentation. Une fois l’outil installé, taper la commande suivante dans un terminal :

jhead -ft /mon_dossier/photos/*.jpg

Pour modifier l’ensemble des fichiers dont l’extension est .jpg dans le dossier /mon_dossier/photos.

Vous pouvez également voir toutes les opérations réalisables avec l’outil jhead en lançant la commande suivante :

man jhead

Copier la date dans le nom du fichier vers la date système

L’exemple de nom de fichier que nous allons utiliser est issu des fichiers générés par l’iPhone :

2018-01-14 22.32.24 903-IMG_7366.heic

Supposons que le dossier /photos soit remplit de fichiers jpg. Nous allons appliquer un script sur ce dossier qui va parcourir chaque nom de fichier, en extraire la date (2018-01-14, dans ce cas), puis modifier la date système de chaque fichier.

#!/bin/bash
for name in *.*
do
   date="$(echo "$name" | grep -o "[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}" | sed -e 's/-//g')"
   echo $name
   touch -a -m -t ${date}0900 "$name"
done

Il n’y a plus qu’a mettre ces quelques lignes dans un fichier nommé rename.sh (p.ex.), à copier ce fichier dans notre dossier /photos et à l’exécuter :

$ sh rename.sh

Voilà, vos fichiers sont à la bonne date !

Lister les fichiers terminant par une ligne vide

Voici une petite commande permettant de liste l’ensemble des fichiers (ici les .php) qui se terminent par une ligne vide :

find -type f -name "*.php" -exec sh -c '[ -z "$(sed -n "\$p" $1)" ] && echo "$1"' _ {} \;

Mettre un système linux à l’heure avec NTP

Voici une commande dont il est difficile de se souvenir tellement on le fait rarement mais qui est très utile. Mettre son système linux à l’heure en précisant le serveur NTP :

ntpdate -u ntp.metas.ch

Ajouter une ligne à la fin de plusieurs fichiers

Une tâche qu’il est souvent laborieux de réaliser à la main : ajouter une ligne à la fin de chaque fichier contenu dans un répertoire.

Voici la commande magique :

find /tmp -name *.php | while read a ; do echo "mon texte a ajouter" >> ${a} ; done

Rien de plus simple !

Créer une archive tar à la volée via ssh

Voici une petite commande bien utile sous Linux (ou Mac OSX). Le but étant de créer une archive compressée (tar gz) d’un répertoire local et de copier cette archive à la volée sur une machine distante. Ainsi, l’archive n’occupe pas d’espace disque sur la machine locale : dans un cas traditionnel, l’archive est créée localement puis envoyée sur la machine distante.

La fameuse commande (tout sur une seule ligne bien sûr):

tar zcvf - /mon/rep/local | ssh login@mon.domaine.xx 
"cat > mon/repertoire/remoteFileName.tar.gz"

Fièrement propulsé par WordPress & Thème par Anders Norén