Ich möchte nur die nicht leere Ausgabe des Find-Befehls in einer Datei speichern. Wenn keine Ausgabedatei vorhanden ist, sollte sie nicht erstellt werden.
$ ls folder
aa
$ find . -name 'bb' | tee file
$ cat file
$ ls folder
aa file
Wie es geht?
Antwort1
Antwort2
Verwenden Sie die -exec
Option, die nur ausgeführt wird, wenn Dateien gefunden werden:
find . -name 'bb' -exec sh -c 'printf "%s\n" "$@" | tee -a file' sh {} +
Erläuterung:
printf "%s\n" "$@"
Drucken Sie jedes Argument mit einem abschließenden Zeilenumbruch.sh
Das zweite Argumentsh -c
wird zugewiesen$0
.{} +
Diese stehen als-exec
Argumente für "alle ausgewählten Dateien".sh -c
weist diese$1
,$2
, usw. zu.