Donc, disons, j'ai un répertoire avec un tas de fichiers comme g.txt, où g.txt a été modifié pour la dernière fois, disons, le 20 juin 2012.
Comment renommer par lots tous les fichiers (comme g.txt) avec la dernière date de modification du 20 juin 2012 ajoutée à la fin?
date
mise en œuvre s'agit-il? Mon GNUdate
ne semble pas gérer les entrées.voici une version du one-liner de goldschrafe qui:
gère également les noms de fichiers commençant par un tiret
for f in *; do mv -- "$f" "$f-$(date -r "$f" +%Y%m%d)"; done
la source
date -r "$f" +%Y%m%d
ou cela ne fonctionnera pas s'ilPOSIXLY_CORRECT
est dans l'environnement. Généralement, les options doivent précéder les autres arguments."${f}"
.Obligatoire zsh one-liner (sans compter le chargement unique des composants optionnels):
Nous utilisons la fonction
stat
intégrée duzsh/stat
module et lazmv
fonction pour renommer les fichiers. Et voici un supplément qui place la date avant l'extension, le cas échéant.la source
Si j'ai bien compris, nous ne savons pas à l'avance quelle est la date de modification. Nous devons donc l'obtenir à partir de chaque fichier, formater la sortie et renommer chaque fichier de manière à inclure la date de modification dans les noms de fichiers.
Vous pouvez enregistrer ce script sous quelque chose comme "modif_date.sh" et le rendre exécutable. Nous l'invoquons avec le répertoire cible comme argument:
modif_date.sh txt_collection
Où "txt_collection" est le nom du répertoire où nous avons tous les fichiers que nous voulons renommer.
la source
stat
utilitaire différent ou aucun.ls
n'est pas fiable . Sur certaines variantes Unix, les noms d'utilisateur et de groupe peuvent contenir des espaces, ce qui annulera l'alignement des colonnes de date.ls
comme une date et une heure ( au lieu d'une date et un an) doit être dans l'année en cours. Ce n'est pas vrai. C'est au cours des six derniers mois; cela pourrait être au cours de l'année précédente (par exemple, du 27 septembre 2016 au 31 décembre 2016 au cours des six derniers mois). (6) Au risque de perroqueter le Wiki de Greg (que @Gilles a déjà cité), les noms de fichiers contenant des sauts de ligne et des espaces peuvent provoquer l'échec de cette opération. … (Suite)Voici la version du one-liner de cas, (basé sur le oneliner de goldschrafe) étendu avec idempotence ,
c'est-à-dire étendu aux fichiers de préfixe avec date et heure et pour ce faire uniquement pour ceux qui n'ont pas encore de préfixe de date et heure .
Cas d'utilisation: utile si vous ajoutez de nouveaux fichiers dans le répertoire et souhaitez ajouter un préfixe date-heure à ceux qui n'en ont pas encore.
la source
for f in *.jpg ; do jhead -ft "$f" ; done
source: unix.stackexchange.com/a/290755/9689