GNU/Linux >> Tutoriels Linux >  >> Linux

Commande de recherche Linux - afficher la progression

Solution 1 :

avec cette astuce, vous pouvez voir le dossier actuel - mais pas de barre de progression - désolé.

 watch readlink -f /proc/$(pidof find)/cwd

Solution 2 :

Un petit utilitaire appelé pv (lecteur de tubes) peut aider. Extrait du fantastique résumé de Peteris Krumins :

Pipe Viewer est un outil basé sur un terminal permettant de surveiller la progression des données dans un pipeline.

Vous pouvez utiliser pv de plusieurs façons. Lorsque je joue ici, je le mets immédiatement après un tube pour surveiller la progression de la sortie générée par find (devrait passer stdin à stdout intact)

find / -mtime -1h | pv > /dev/null

qui affichera une sortie un peu comme ceci :

6.42MB 0:01:25 [31.7kB/s] [         <=>      ]

(J'ai redirigé stdout vers /dev/null afin que je puisse voir la barre de progression en action sans que la sortie ne s'envole. Ce n'est probablement pas votre intention avec find, alors adaptez-vous en conséquence)

Honnêtement, je ne sais pas si cela fonctionne bien dans la nature. Pour les trouvailles "coûteuses" comme celle ci-dessus (traversant de la racine), cela a semblé fonctionner assez bien. Pour les commandes plus simples dans un nœud plus profond de l'arborescence des répertoires, pv échouait lamentablement. Ces commandes renvoient des résultats immédiatement, donc une barre de progression est probablement inutile ici.

Dans tous les cas, jouez et voyez si cela fonctionne du tout pour ce dont vous avez besoin. Matière à réflexion, au moins.

Solution 3 :

J'ai cherché cela aujourd'hui et je suis arrivé ici via Google. J'ai eu une recherche de longue date sous OS X et apparemment, watch n'existe pas là-bas. Voici donc une autre solution :

lsof -Fn -a -c find -d cwd +r 10

  • lsof =liste des fichiers ouverts
  • -Fn =affiche simplement le nom du fichier/répertoire (préfixé par le caractère 'n', ignorez ceci si vous préférez le lsof complet sortie
  • -a =dire lsof pour afficher uniquement les lignes correspondant à toutes critères (par défaut, il affiche les lignes correspondant à tout critères)
  • -c find =afficher les fichiers/répertoires ouverts par le processus nommé find (en fait, processus dont le nom commence par find , mais il est sensible à la casse donc Finder ne s'affichera pas)
  • -d cwd =afficher les lignes avec FD (filedescriptor) cwd (répertoire de travail courant)
  • +r 10 =afficher la sortie toutes les 10 secondes jusqu'à ce qu'aucun fichier ouvert ne soit trouvé (la recherche est terminée)

Cela affichera le répertoire find est traité toutes les 10 secondes, il devrait donc donner une idée si find fonctionne toujours et dans quelle mesure il a progressé.

Solution 4 :

Il y a un exemple de recherches parallèles avec find en man find . En l'utilisant, vous pouvez effectuer plusieurs vérifications pour chaque élément, en effectuant plusieurs actions en fonction de la condition qui fonctionne. La première vérification peut être, par exemple, simple-print , donc tous les noms sont imprimés sur stdout. La deuxième vérification fera ce que vous voulez. Quelque chose comme :

find /work \( -fprint /dev/stderr \) , \( -name 'core' -exec rm {} \; \)

Si la deuxième vérification doit également afficher les noms de fichiers, vous pouvez rediriger l'un d'entre eux vers stderr en utilisant -fprint /dev/stderr .

Solution 5 :

AFAIK, ce n'est pas le cas, et sa mise en œuvre ne serait pas triviale.

... Hmm. Peut-être un script exécutant find <target dir> -type d d'abord, stocker la liste puis faire écho à chaque répertoire avant d'exécuter un find <list item> -maxdepth 1 <rest of find parameters> dans une boucle for.

Notez que vous échangez une perte /significative/ de performance en échange de pouvoir voir vaguement ce qu'il fait.


Linux
  1. 25 exemples simples de la commande Linux find

  2. Commande Linux mv

  3. Linux du command

  4. Commande IP Linux

  5. trouver des exemples de commandes sous Linux

Commande Linux Finger pour trouver les détails de l'utilisateur

Commande Df sous Linux

Comment trouver une adresse IP dans la ligne de commande Linux

Rechercher la commande sous Linux/UNIX

La commande Linux find Directory :Explication

Linux top -c pour afficher la commande complète