2 votes

Existe-t-il un moyen compatible avec les systèmes Nix pour obtenir l'horodatage des fichiers modifiés ?

En essayant de résoudre ce problème, j'ai trouvé des solutions qui ne sont pas compatibles entre ubuntu et osx. Je souhaite faire une commande de remplacement pour les deux suivantes, qui diffèrent en deux caractères :

osx :

find . -type f -exec stat -f "%m {}" {} \;| sort -n | tail -n 1 | cut -d ' ' -f 2

ubu :

find . -type f -exec stat -c "%Y {}" {} \;| sort -n | tail -n 1 | cut -d ' ' -f 2

2voto

James Mertz Points 390

El stat ne fait pas partie de POSIX, les systèmes peuvent donc avoir des implémentations différentes.

En supposant que Perl est disponible, ce qui suit devrait fonctionner :

-exec perl -MFile::stat -e 'print stat($_)->mtime, " $_\n" for @ARGV' {} \;

-exec perl -e 'print ((stat($_))[9], " $_\n") for @ARGV' {} \;

La version avec -MFile::stat est plus lisible, mais malheureusement plusieurs fois plus lente.

Le script complet ressemblerait à ceci :

find . -type f -exec perl -e 'print ((stat($_))[9], " $_\n") for @ARGV' {} + |
  sort -n | tail -n 1 | cut -d " " -f 2-

(notez le 2- à la fin)

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