Soluzione 1:
con questo trucco puoi vedere la cartella corrente - ma nessuna barra di avanzamento - scusa.
watch readlink -f /proc/$(pidof find)/cwd
Soluzione 2:
Una piccola utility chiamata pv (visualizzatore pipe) può aiuto. Dal fantastico riassunto di Peteris Krumins:
Pipe viewer è uno strumento basato su terminale per monitorare l'avanzamento dei dati attraverso una pipeline.
Puoi usare pv in diversi modi. Quando gioco qui, lo metto subito dopo una pipe per monitorare l'avanzamento dell'output generato da find (dovrebbe passare stdin a stdout intatto)
find / -mtime -1h | pv > /dev/null
che mostrerà un output simile a questo:
6.42MB 0:01:25 [31.7kB/s] [ <=> ]
(Ho reindirizzato stdout a /dev/null in modo da poter vedere la barra di avanzamento in azione senza che l'output voli. Questo probabilmente non è il tuo intento con find, quindi adattalo di conseguenza)
Onestamente non sono sicuro di quanto funzioni bene in natura. Per reperti "costosi" come quello sopra (attraversando dalla radice), sembrava funzionare abbastanza bene. Per i comandi più semplici in un nodo più profondo nell'albero delle directory, pv ha fallito miseramente. Questi comandi restituiscono risultati immediatamente, quindi una barra di avanzamento è probabilmente discutibile qui.
In ogni caso, gioca e vedi se funziona per quello che ti serve. Spunti di riflessione, almeno.
Soluzione 3:
L'ho cercato oggi e sono arrivato qui tramite Google. Ho avuto una ricerca di lunga data in esecuzione su OS X e apparentemente, watch
lì non esiste. Quindi ecco un'altra soluzione:
lsof -Fn -a -c find -d cwd +r 10
lsof
=elenco dei file aperti-Fn
=mostra solo il nome del file/directory (preceduto dal carattere 'n', saltalo se preferisci illsof
completo uscita-a
=dillo alsof
per mostrare solo le righe corrispondenti a tutti criteri (per impostazione predefinita mostra le righe corrispondenti a qualsiasi criteri)-c find
=mostra i file/directory aperti dal processo chiamatofind
(in realtà, processo il cui nome inizia confind
, ma fa distinzione tra maiuscole e minuscole, quindiFinder
non verrà visualizzato)-d cwd
=mostra righe con FD (filedescriptor) cwd (directory di lavoro corrente)+r 10
=mostra l'output ogni 10 secondi finché non vengono trovati file aperti (la ricerca è terminata)
Questo mostrerà la directory find
sta elaborando ogni 10 secondi, quindi dovrebbe dare un'idea se find
funziona ancora e fino a che punto è progredito.
Soluzione 4:
C'è un esempio di ricerche parallele con find
in man find
. Usandolo, puoi eseguire più controlli per ogni oggetto, eseguendo più azioni a seconda di quale condizione funziona. Il primo controllo può essere, ad esempio, semplice-print
, quindi tutti i nomi vengono stampati su stdout. Il secondo assegno farà quello che vuoi. Qualcosa come:
find /work \( -fprint /dev/stderr \) , \( -name 'core' -exec rm {} \; \)
Se il secondo controllo dovesse visualizzare anche i nomi dei file, puoi reindirizzare uno di essi a stderr usando -fprint /dev/stderr
.
Soluzione 5:
AFAIK, non è così, e implementarlo non sarebbe banale.
... Hmm. Forse uno script che esegue find <target dir> -type d
prima, memorizzando l'elenco e quindi echeggiando ogni directory prima di eseguire un find <list item> -maxdepth 1 <rest of find parameters>
in un ciclo for.
Tieni presente che stai scambiando una /significativa/ perdita di prestazioni in cambio della possibilità di vedere vagamente cosa sta facendo.