72 votes

Comment vérifier que file2 est plus récent que file1 en bash ?

Comment puis-je vérifier que file2 a été modifié pour la dernière fois après file1 ?

Dans cet exemple, perl a été modifié plus récemment que stack . Y a-t-il une commande bash ou Linux qui peut comparer ces fichiers en fonction du temps de modification ?

-rw-r--r--    1 root     root         1577 Sep  7 22:55 stack
-rwxr-xr-x    1 root     root          626 Sep  7 23:10 perl

79voto

PoseLab Points 124

Je l'ai trouvé. aquí

for f in /abcd/xyz* do
   [ "$f" -nt /abcd/test.txt ] && echo "file f$ found" done

46voto

Will Sheppard Points 704
if [[ FILE1 -nt FILE2 ]]; then
  echo FILE1 is newer than FILE2
fi

Tiré de ' test de l'homme '. Extrait :

FILE1 -nt FILE2
  FILE1 is newer (modification date) than FILE2

8voto

Damian Powell Points 315

Une autre façon de procéder :

find -name file2 -newer file1

retournera null si file2 est plus ancien ou du même âge que file1. Il retournera le nom (et le répertoire) du fichier2 s'il est plus récent.

Sachez que Linux ne garde pas trace de la date de création des fichiers. Ces tests porteront sur la date et l'heure de modification la plus récente.

2voto

DBr Points 263

Si vous souhaitez obtenir des informations plus détaillées, vous pouvez utiliser la fonction stat commande

<tbielawa>@(fridge)[~/SuperUser] 03:15:10
$ touch firstFile
<tbielawa>@(fridge)[~/SuperUser] 03:15:24
$ touch secondFile
<tbielawa>@(fridge)[~/SuperUser] 03:15:45
$ stat firstFile 
  File: `firstFile'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 805h/2053d  Inode: 151528      Links: 1
Access: (0644/-rw-r--r--)  Uid: (  500/tbielawa)   Gid: (  500/tbielawa)
Access: 2010-09-14 03:15:24.938721003 -0400
Modify: 2010-09-14 03:15:24.938721003 -0400
Change: 2010-09-14 03:15:24.938721003 -0400
<tbielawa>@(fridge)[~/SuperUser] 03:15:48
$ stat secondFile 
  File: `secondFile'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 805h/2053d  Inode: 151529      Links: 1
Access: (0644/-rw-r--r--)  Uid: (  500/tbielawa)   Gid: (  500/tbielawa)
Access: 2010-09-14 03:15:45.074722792 -0400
Modify: 2010-09-14 03:15:45.074722792 -0400
Change: 2010-09-14 03:15:45.074722792 -0400

2voto

user unknown Points 1732
echo $(($(date -r file1 +%s)-$(date -r file2 +%s)))
2208

Si le résultat est > 0, le premier fichier est plus récent. (Plus récent en termes de dernière modification, pas en termes d'heure de création, qui est stockée sur linux).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X