Dans mon script bash, je fais ce qui suit:

shopt -s nullglob 

for file in $LOCATION/EXF_TESTFORSTACKOVERFLOW_*.xml;
 do
touch "$file.FTC"
 done

Mais avant de créer le fichier .FTC, je voudrais faire une vérification :

SI la date de création du fichier xml est à plus de 30 minutes de sysdate - créer FTC

S'il n'a pas plus de 30 minutes, ne créez pas de fichier .FTC pour ce fichier.

Toutes les suggestions sur la façon dont je peux implémenter cette vérification avant de toucher "$file.FTC" Je ne sais pas comment vérifier la date des fichiers. Lorsque vous utilisez la commande ls -l, je vois cette date à laquelle je souhaite effectuer cette vérification.

Merci à tous!

1
Swoop 2 nov. 2020 à 16:59

1 réponse

Meilleure réponse

Vous n'avez peut-être pas d'heure de "création (ou de naissance)" -- cela dépend de votre système de fichiers (vérifiez votre /etc/fstab) -- vous devriez probablement utiliser "mtime" à la place, la dernière heure de modification ou "ctime" , le dernier changement d'inode (renommer le fichier, déplacé, etc.)

Voici un exemple de la commande stat pour obtenir des données temporelles pour vos fichiers :

stat -c $'%n\nbirth\t%W = %w\naccess\t%X = %x\nmod\t%Y = %y\nchange\t%Z = %z\n' *

La sortie peut ressembler à quelque chose comme (il s'agit d'un système de fichiers XFS) :

file.txt
birth   0 = -
access  1595249263 = 2020-07-20 08:47:43.194000000 -0400
mod     1595249255 = 2020-07-20 08:47:35.453000000 -0400
change  1595249255 = 2020-07-20 08:47:35.453000000 -0400

test.dat
birth   0 = -
access  1595364240 = 2020-07-21 16:44:00.675000000 -0400
mod     1595364184 = 2020-07-21 16:43:04.786000000 -0400
change  1595364184 = 2020-07-21 16:43:04.786000000 -0400

menu.sh
birth   0 = -
access  1600025501 = 2020-09-13 15:31:41.977000000 -0400
mod     1600025496 = 2020-09-13 15:31:36.664000000 -0400
change  1600025496 = 2020-09-13 15:31:36.664000000 -0400

Sur mon Mac avec APFS, l'heure de naissance est une valeur connue.

0
glenn jackman 2 nov. 2020 à 14:21