Donc, je veux afficher (via ls
par exemple) tous les fichiers, qui ont été modifiés au cours des sept derniers jours. Si je suis dans mon dossier docroot, il devrait pouvoir regarder "plus profondément".
Par exemple:
File Last changed
docroot
|- myfile1 30.11.2015
|- myfile2 10.11.2015
|- MySub
|-sub1 30.11.2015
|-sub2 10.11.2015
Ainsi, le ls
(ou ce qui convient) devrait sortir myfile1
et (si possible)
MySub/sub1
.
Est-ce faisable avec une seule commande?
command-line
search
ls
DasSaffe
la source
la source
find
a l'ls
option pour que vous puissiez le fairefind . -type f -mtime -7 -ls
find ... -exec ls -l {} +
ce qui s'exécutels -l
beaucoup plus efficacement - moins de fois avec plusieurs paramètres. Il s'agit d'une option standardfind
spécifiée par POSIX.Avec
zsh
:**/*
recherchera les fichiers récursivement à partir du répertoire courant(.m-7)
est le qualificatif glob où.
indique un fichier normal,m-7
indique des fichiers qui ont été modifiés au cours des 7 derniers joursla source
La commande suivante fait rêver sur Mac OSX - peut-être aussi sur Ubuntu…
Cela recherche les fichiers dans l'arborescence de répertoires en cours qui ont été modifiés au cours des 7 derniers jours, affiche la date de modification + l'heure et le chemin, triés les plus récents en premier.
Exemple de sortie:
Je serais reconnaissant à tous les commentaires des utilisateurs d'ubuntu.
la source
Pas exactement ce qui était demandé ... mais beaucoup plus facile à retenir ...
ou
la source
7 jours c'est 60 secondes * 60 minutes * 24 heures * 7 jours = 604800 secondes
Découvrez la date actuelle en secondes (heure de l'époque Unix):
Soustrayez les 7 jours en secondes:
Maintenant, prenez la
stat
commande et imprimez les statistiques pour tous les fichiers au format "nom + heure en secondes" et utilisezawk
pour rogner les fichiers dont l'heure de modification est supérieure à cette date que nous avons calculéeLes 3 derniers fichiers sont particulièrement intéressants, car je sais que je les travaillais il y a moins de 7 jours. Donc je sais que ça marche
la source
awk '$2 > 1448271265 {print $0}'
vous pouvez dire directementawk '$2 > 1448271265'
. En condition vraie, awk imprime la ligne actuelle comme action par défaut.