2011-08-19 2 views
2

J'ai utilisé la commande shell find pour afficher la liste de tous les fichiers dans un répertoire.Il fonctionne correctement.Je souhaite afficher la liste de tous les fichiers modifiés après une date spécifiée. ont utilisé cette commandeExécution de la commande find pour obtenir tous les fichiers modifiés après une date

$command='touch -date "2010-01-18" /home;find.-newer /home '; 
$Getfile = exec($command,$ret,$output); 

Mais il ne fonctionne pas .REMERCIE à l'avance

+2

Qu'est-ce qui ne fonctionne pas , la commande shell ou l'appel 'exec()'? Qu'est ce que tu obtiens? Une erreur, pas de sortie etc ... – DaveRandom

+1

Je parie que si vous utilisez la commande * this * find dans shell, ça ne marchera pas aussi bien. – hakre

+0

l'argument -newer nécessite un pointeur vers un fichier comme référence pour les fichiers qu'il doit afficher comme plus récent. voir la page man 'Le fichier a été modifié plus récemment que le fichier. Si le fichier est un lien symbolique et que l'option -H ou l'option -L est active, l'heure de modification du fichier vers lequel il pointe est toujours utilisée. Il faut donc appuyer sur un fichier et non sur un répertoire, et utiliser ce fichier comme référence, ou vous n'avez pas besoin de toucher et utilisez '-cmin ' car vous utilisez php c'est dommage de calculer les minutes pour une date spécifique. – Rufinus

Répondre

0

Trouver tous les fichiers modifiés après la date spécifique dans le répertoire courant

$command='touch -t 201001180000 /tmp/timestamp; find . -type f -newer /tmp/timestamp' 
+0

Puis-je spécifier un autre répertoire? – Warrior

+0

absolument, $ command = 'touch -t 201001180000 $ path1; trouver $ path2 -type f -newer $ path1 ' – Serith

0

Vous pouvez utiliser le répertoire pour trouver, cependant, la syntaxe proposée est -

find ABSOLUTE_PATH -newer /home -type f 

. est le répertoire courant,
(dans un environnement Web pourrait être se référer à DOCUMENT_ROOT + REQUEST_URI)

Questions connexes