Je souhaite donc 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 être "plus profond".
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 commande?
Bien sûr. À partir du répertoire dans lequel vous vous trouvez:
find . -type f -mtime -7 -exec ls -l {} \;
Ajoutez-y une redirection (alias > results.txt
pour les stocker dans ce fichier).
type f
ne fait que des fichiers et non des répertoiresmtime -7
fait il y a 7 jours jusqu'à maintenant (+7 serait 'plus vieux que 7 jours')ls
pour afficher une longue listeVous pouvez aussi jouer avec la partie ls -l
:
find . -type f -mtime -7 -exec ls -Rl --time-style=long-iso {} \;
find . -type f -mtime -7 -exec ls -R --time-style=long-iso {} \;
montrera un arbre comme méthode avec des répertoires entre les fichiers dans la liste longue (1) ou la liste courte (2).
Avec zsh
:
ls -l **/*(.m-7)
**/*
va chercher les fichiers récursivement à partir du répertoire courant
(.m-7)
est le qualificatif global où .
indique un fichier normal, m-7
indique des fichiers modifiés au cours des 7 derniers jours.
La commande suivante fonctionne à merveille sur Mac OSX - peut-être aussi sur Ubuntu…
find . -type f -mtime -7 -exec stat -lt "%Y-%m-%d %H:%M:%S" {} \; | cut -d\ -f6- | sort -r
Cela permet de rechercher dans l’arborescence actuelle les fichiers qui ont été modifiés au cours des 7 derniers jours, d’envoyer la date de modification, l’heure et le chemin, en commençant par le plus récent.
Exemple de sortie:
2018-02-21 22:06:30 ./fmxmlsnippet.xml
2018-02-19 12:56:01 ./diff.html
2018-02-19 12:44:37 ./temp/iDDR/XMSC_fmxmlsnippet.xml
2018-02-18 22:04:05 ./temp/iDDR/XMFD_fmxmlsnippet.xml
2018-02-15 10:18:27 ./xml/iDDR/XML2_fmxmlsnippet.xml
2018-02-15 10:13:29 ./xsl/fmxmlsnippet/XML2_fmCM_AnalyseLayout.xsl
2018-02-15 10:11:36 ./xsl/.DS_Store
2018-02-15 10:10:51 ./xsl/_inc/inc.XML2_fmCM_ReportReferencesToExternalFiles.xsl
2018-02-15 10:10:09 ./xsl/_inc/.DS_Store
2018-02-15 10:07:35 ./xsl/fmxmlsnippet/XML2_fmCM_AnalyseLayout-NoAnchors.xsl
2018-02-15 10:07:35 ./xsl/_inc/inc.XML2_fmCM_AnalyseLayout.xsl
Je serais reconnaissant de tout commentaire des utilisateurs d'ubuntu.
Pas exactement ce qui était demandé ... mais beaucoup plus facile à retenir ...
ls -alRt docroot
ou
ls -alRt /path/to/top/level/directory
7 jours soit 60 secondes * 60 minutes * 24heures * 7 jours = 604800 secondes
Découvrez la date actuelle en secondes (heure de la période Unix):
$ date +%s
1448876323
Soustrayez les 7 jours en secondes:
expr $(date +%s) - 604800
1448271548
Maintenant, prenez la commande stat
et imprimez les statistiques de tous les fichiers au format "nom + temps en secondes" et utilisez awk
pour rogner les fichiers dont le temps de modification est supérieur à la date que nous avons calculée.
$ stat --printf="%n %Y\n" $HOME/* | awk '$2 > 1448271265 {print $0}'
/home/xieerqi/1448428697574.png 1448429613
/home/xieerqi/1448763343273.png 1448763478
/home/xieerqi/1510DRIVE 1448352453
/home/xieerqi/addRemoveDistribution 1448666843
/home/xieerqi/add-update.awk 1448716356
/home/xieerqi/add-update.sh 1448625092
Les 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