
Ich suche PDF-Dateien in allen Verzeichnissen außer denen in .texpadtmp
nach Code, der ursprünglich aufdiese Diskussion.
function findpdfs() {
find . -iname '*.pdf' -not -path "*.texpadtmp*" | while read filename
do
echo -e "\033[34;1m// === PDF Document:\033[33;1m $filename\033[0m"
pdftotext -enc Latin1 "$filename" - | grep --color=always -i $1
time # TODO problem here!
done
}
wobei ich in der letzten Zeile erfolglos versuche, die Ausführungszeit des Skripts für jede Datei auszudrucken.
Wie kann man die Uhrzeit richtig ausdrucken?
Mein nächstes Ziel ist dann, alle Ausführungszeiten zu haben und sie in der Ausgabe als Prozentsätze und als ganze Zahlen darzustellen, damit ich ungefähr abschätzen kann, wofür die meisten Zeitressourcen aufgewendet werden.
Antwort1
Methode Nr. 1 – Verwenden der Anfangs-/Endzeit
Normalerweise geschieht dies dort, wo Sie es tun:
begin=$(date +%s)
... do something ...
end=$(date +%s)
Und dann subtrahieren Sie die $begin
Zeit von der $end
Zeit, um die Anzahl der vergangenen Sekunden zu erhalten.
tottime=$(expr $end - $begin)
Methode Nr. 2 - Verwenden der Zeitbefehle
Die andere Methode wäre, den time
in Bash integrierten Befehl oder time program that's included with most Linux/Unix systems here,
/bin/time` zu verwenden.
Sie können dies wie folgt überprüfen:
$ type -a time
time is a shell keyword
time is /usr/bin/time
time is /bin/time
Sie verwenden es folgendermaßen:
eingebaut$ time sleep 5
real 0m5.004s
user 0m0.001s
sys 0m0.001s
eigenständige ausführbare Datei
$ /bin/time sleep 5
0.00user 0.00system 0:05.00elapsed 0%CPU (0avgtext+0avgdata 628maxresident)k
0inputs+0outputs (0major+191minor)pagefaults 0swaps
Sie liefern unterschiedliche Ausgaben, aber Sie können die verwenden, die Ihren Anforderungen am besten entspricht. Beide geben die verstrichene Zeit aus, die ein Befehl zum Ausführen benötigt:
$ time <cmd>
Sie können Ihrem pdf2text
Befehl also ein Präfix voranstellen.