Направление не пустого вывода в файл
Я хочу сохранить в файл только непустой вывод команды find. Если нет выходного файла, не следует создавать.
$ ls folder
aa
$ find . -name 'bb' | tee file
$ cat file
$ ls folder
aa file
Как это сделать?
2 ответа
Утилита ifne из пакета moreutils должен выполнить то, что вы хотите:
$ find . -name 'bb' | ifne tee file
Со страницы руководства:
Описание
ifne запускает следующую команду тогда и только тогда, когда стандартный ввод не пуст.
Использовать -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, так далее.