6 votes

Comment renommer des fichiers par lots via le terminal en utilisant la date du fichier comme nom de fichier ?

J'ai un tas de photos et de vidéos provenant de différentes sources et je veux normaliser les noms de fichiers à l'aide de Terminal. J'ai examiné un certain nombre d'outils différents, dont les suivants Changeur de nom à Automator et au Finder lui-même. NameChanger n'autorise pas plus d'une action à la fois et Finder et Automator ne me permettent pas de définir le format de la date avec une chaîne de format.

J'ai joué avec quelques fonctions bash et j'ai trouvé que

stat -f "%Sm" -t "%Y-%m-%d %H.%M.%S" file.ext

produit le format de date et d'heure que je recherche.

Pourtant, j'ai trouvé que

for file in *.*
do
    mv "$file" echo stat -f "%Sm" -t "%Y-%m-%d %H.%M.%S" "$file"
done

renvoie à

-bash: syntax error near unexpected token `done'

Je ne suis pas vraiment compétent en matière de scripting bash, alors excusez toute incompétence dans les exemples ci-dessus.

Ce que je veux faire, c'est supprimer le nom de base du fichier (tout ce qui se trouve avant .jpg) et le remplacer par le format de date et d'heure que j'ai obtenu à partir de stat plus tôt.

Par exemple :

20160708_151344000_iOS.jpg   --> 2016-07-08 15.13.44.jpg
WP_20140915_02_03_15_Raw.jpg --> 2014-09-15 02.03.15.jpg

Comment dois-je m'y prendre ?

7voto

user3439894 Points 52496
for f in *.*; do 
    echo mv "$f" "$(stat -f '%Sm' -t '%Y-%m-%d %H.%M.%S' "$f").${f##*.}"
done

Ou en une phrase :

for f in *.*; do echo mv "$f" "$(stat -f '%Sm' -t '%Y-%m-%d %H.%M.%S' "$f").${f##*.}"; done

Dans les deux cas, retirez le echo commande après les tests.

Le site ${f##*.} partie de la commande obtenir le extension de $f afin que vous puissiez utiliser le globe terrestre *.* par rapport à l'utilisation d'un extension dans le for f in c'est-à-dire for f in *.* vs. for f in *.jpg

3voto

nohillside Points 82672
for f in *.jpg; do
    echo mv "$f" "$(stat -f '%Sm' -t '%Y-%m-%d %H.%M.%S' "$f")".jpg
done

Retirer le echo une fois que vous êtes sûr que la commande est correcte.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X