2017-09-03 2 views
0

Jemand hat mich das rekursiv Ordner Platzhalter zu erweitern:Recurse Dateien mit Suchen und zeigen Fortschritt

exec 7>&1 
output="go" 
while [ "$output" ]; do 
    output=$(find . -name "*.cloudf" -print0 | xargs -0 -n 1 python odrive.py sync | tee /dev/fd/7) 
done 

(.cloudf sind odrive Platzhalter-Dateien, die sync Befehl in Ordnern erweitert, und diese neuen Ordner werden dann mehr enthalten .cloudf Platzhalter, die erweitert werden müssen.)

Es funktioniert. Das Problem ist, dass es nach ein paar Mal nicht mehr den Fortschritt anzeigt.

Die exec 6>&1 und tee /dev/fd/6 sollen eine Art Trick für den Fortschritt sein ... aber sie funktionieren nur ein- oder zweimal, dann hören sie auf zu arbeiten.

Ich versuchte, die 6 zu 7 und anderen Nummern zu ändern, aber das hat nicht geholfen.

+0

I odrive nicht über den Rest der Befehlszeile wissen oder was“ "oder' .cloudf'-Dateien sind möglicherweise für, aber wenn Sie eine Umleitung mit 'exec 7> & 1' öffnen, können Sie versuchen, sie zu schließen, wenn Sie mit' exec 7> & - 'fertig sind. – ghoti

+0

Danke, ich habe das versucht; immer noch nicht drucken Fortschritt ... –

Antwort

0

Dies funktioniert (wenn auch mit einigen zusätzlichen Leerzeilen):

while [[ -n $(find . -name '*.cloudf') ]]; do 
    find . -name "*.cloudf" -print0 | xargs -0 -n 1 -P $p python odrive.py sync; 
done 

(Mit Hilfe von this und this)

+0

Ich sehe nicht, wie dies das Problem der fehlenden Ausgabe durch "Tee" behandelt. Es verwendet nicht einmal eine phantasievolle Umleitung. Aber wie auch immer ... wenn Sie Ihr Problem damit gelöst haben, markieren Sie bitte die Antwort als richtig, um die Frage zu "schließen". – ghoti

Verwandte Themen