2010-11-23 5 views
0

(Je pense que je peux utiliser grep, de toute façon ....) Essayer de récursivement liste les fichiers modifiés à une date spécifique, mais, les commandes que j'essaie d'utiliser soit tout listés par date, ou seulement les fichiers dans le répertoire Je suis dedans. Y at-il un moyen de faire cela? Est-ce grep ou autre chose?unix aide avec grep?

Répondre

1

Vous pouvez combiner ls et grep pour répertorier les fichiers de manière récursive, puis rechercher des dates spécifiques.

# List files recursively with `-R` and grep for a date. 
ls -lR | grep 'Nov 23' 

find peut être utilisé pour trouver récursive fichiers correspondant aux critères de votre choix. Il peut ensuite afficher ces noms de fichiers, ou les transmettre à une autre commande, ou n'importe quel nombre d'actions.

# Display all files modified yesterday. 
find -mtime 0 

# Display all files modified yesterday in `ls -l' format. 
find -mtime 0 -ls 

# Search all files modified yesterday for the string "foobar". 
# "{}" is a placeholder for the file names and "+" tells find to 
# pass all the files at once to a single invocation of grep. 
find -mtime 0 -exec grep foobar {} + 
+0

Cool. Je ne savais pas que 'ls 'pouvait fonctionner récursivement! – dennycrane

3

Voir find, en particulier les prédicats -anewer, -atime, -mtime, -newer et -newerXY.

0

mai quelque chose comme

find . -type f -exec ls -l \{\} \; | grep " Aug 26 2003" 

vous commencer?

0

La plus simple à utiliser est zsh. Beats trouve n'importe quel jour la simplicité et la performance.

ls **/*(m5) liste récursivement les fichiers modifiés il y a exactement 5 jours. ls **/*(mh-5) liste les fichiers modifiés au cours des 5 dernières heures. Vous pouvez sélectionner des mois, des jours, des heures, des minutes, des secondes, comme vous le souhaitez. Vous pouvez demander des fichiers accédés il y a N jours au lieu de l'heure de modification si nécessaire.

Bien sûr, la commande ne doit pas nécessairement être ls. Tout ce que vous devez faire fera l'affaire.