Направление не пустой вывод в файл

Я хочу сохранить только непустой вывод команды находки в файл. Если нет никакого выходного файла, не должен быть создан.

$ ls folder
aa
$ find . -name 'bb' | tee file
$ cat file
$ ls folder
aa file

Как сделать это?

1
задан 23 February 2018 в 08:47

2 ответа

Утилита ifne от пакета moreutils должен выполнить то, что Вы хотите:

$ find . -name 'bb' | ifne tee file

Из страницы справочника:

Описание

ifne выполняет следующую команду, если и только если стандартный вход не пуст.

4
ответ дан 3 December 2019 в 06:24

Используйте -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, и т.д.
3
ответ дан 3 December 2019 в 06:24

Другие вопросы по тегам:

Похожие вопросы: