Je recherche des fichiers dans mon répertoire personnel qui ont été modifiés au cours des deux dernières minutes et qui contiennent également une certaine chaîne. J'ai essayé avec cette commande :
find -type d -mmin -2 -ls | grep -Ril "mystring"
Cela semble fonctionner, mais apparemment, il n'imprime que les fichiers contenant la chaîne donnée à l'intérieur plutôt que les fichiers modifiés pour la dernière fois il y a 2 minutes contenant la chaîne. Il semble que la première partie de la commande ne soit pas exécutée.
Réponse acceptée :
Vous avez fait une bonne tentative avec votre propre suggestion
find -type d -mmin -2 -ls | grep -Ril "mystring"
Cela aurait identifié des répertoires (-type d
) qui ont été modifiés dans les deux dernières minutes plutôt que des fichiers (-type f
). Canaliser la sortie de -ls
à grep
aurait généralement recherché les noms de fichiers générés pour mystring
. Cependant, dans ce cas, le -R
flag modifie le comportement de grep
et il ignore votre liste de noms de fichiers, recherchant à la place tous les fichiers dans et en dessous du répertoire actuel.
Alors, divisons le problème en deux parties
-
Rechercher les derniers fichiers modifiés au cours des 2 dernières minutes dans votre répertoire personnel
find ~ -type f -mmin -2
-
[Fichiers] contenant une certaine chaîne
grep -Fl 'certain String' {files...}
Maintenant, vous devez les assembler. Le {}
est un espace réservé pour les noms de fichiers générés par le find
de l'étape 1, et le +
final indique que le {}
peut être répété plusieurs fois , c'est-à-dire plusieurs noms de fichiers
find ~ -type f -mmin -2 -exec grep -Fl 'certain String' {} +
Changer le grep
à echo grep
vous montrera ce qui est exécuté par le find
commande; cela peut être une technique de débogage utile :
find ~ -type f -mmin -2 -exec echo grep -Fl 'certain String' {} +
Veuillez envisager d'exécuter man find
et man grep
pour connaître les différentes options, comme le -F
et -l
dans grep -Fl
, sinon vous n'apprenez rien de l'exercice que vous avez défini ; vous ne faites que copier une réponse.