Я хочу сохранить только непустой вывод команды find в файл. Если вывода нет, файл не должен создаваться.
$ ls folder
aa
$ find . -name 'bb' | tee file
$ cat file
$ ls folder
aa file
Как это сделать?
решение1
решение2
Используйте -exec
опцию, которая будет запущена только в том случае, если файлы будут найдены:
find . -name 'bb' -exec sh -c 'printf "%s\n" "$@" | tee -a file' sh {} +
Объяснение:
printf "%s\n" "$@"
Выведите каждый аргумент с завершающим символом новой строки.sh
Второй аргументsh -c
присваивается$0
.{} +
В качестве-exec
аргументов они обозначают «все выбранные файлы».sh -c
назначает их$1
,$2
, и т.д.