Как echo найти команду

Сегодня я столкнулся с той же проблемой, и ответ Эрика кажется наиболее точным. Вероятно, проблема в том, что у вас разные версии postgresql-client, а pg_dump просто использует самый старый клиент.

Вы можете решить эту проблему, используя полный путь, как он описал, но я нашел более простое решение - удалить пакет postgresql-client-common (который удаляет всех клиентов), а затем переустановить postgresql-client-9.3. Это оставляет вам только последние версии pg_dump, которые, вероятно, вам нужны.

0
28.12.2018, 17:19
4 ответа

findимеет действие fprint, которое может записывать результаты команды find в файл. Затем вы можете расширить свою команду как:

find $backup_path/$HOSTNAME.*.img -mtime +$retention_days -type f -fprint /path/to/log.txt -delete

Затем вы можете получить количество файлов из файла журнала, используяwc:

cat /path/to/log.txt | wc -l

Если в результатах поиска могут появляться специальные символы, в качестве альтернативы можно использовать опцию fprint0. Это запишет результаты в указанный файл в виде строк с нулевыми разделителями -.

Чтобы подсчитать элементы в результирующем файле, вы можете просмотреть параметры, обсуждаемые в этом вопросе.:Подсчитать элементы с нулевым разделителем в файле .

3
28.01.2020, 02:13

Вы можете использовать параметр -printдля findдля вывода удаленных файлов, а затем направить их в teeдля записи результатов в файл журнала. И, наконец, подсчитайте строки удаленных файлов и добавьте их в лог-файл.

find $backup_path/$HOSTNAME.*.img -mtime +$retention_days -type f -delete -print | tee ${LOGFILE} | wc -l | xargs echo "Files deleted:" >> ${LOGFILE}

Если вы хотите добавить новые результаты к тому же ${LOGFILE}, вам придется использовать tee -a.

5
28.01.2020, 02:13

Вы можете использовать приведенную ниже команду для достижения того же

find $backup_path/$HOSTNAME.*.img -mtime +$retention_days -type f -exec rm -rvf {} \; >log_file ===> This  will delete and writes to logfile which are the files getting deleted

wc -l log_file===> will display count of files which are deleted
0
28.01.2020, 02:13

Если у вас могут быть имена файлов с символами новой строки в них(touch /the/path/$'foo\nbar'для создания примера ), вы можете избежать некоторой путаницы, используя функцию GNU find -fprintfдля печати имен файлов в один файл журнала и точку для каждого имени файла. в отдельный лог-файл. Тогда количество байтов в точечном файле будет равно количеству совпадающих файлов, а сами имена файлов будут в отдельном файле.

find "$backup_path"/"$HOSTNAME".*.img -mtime +"$retention_days" -type f \
  -fprintf./deleted-files '%p\n' \
  -fprintf./count-files '.' \
  -delete

Выше я специально поместил два оператора -fprintfпосле предыдущих критериев фильтрации -mtimeи -type fи непосредственно перед -delete, чтобы они срабатывали только тогда, когда -deleteдолжен быть.

Первый новый оператор печатает пути к файлу ./deleted-files; второй печатает точку на ./count-files. Вы можете просмотреть журнал удаленных файлов -для поиска имен удаленных файлов и использовать wc -c < count-filesдля отчета об общем количестве удаленных файлов. Имена файлов перезаписываются -fprintfпри каждом запуске.

1
28.01.2020, 02:13

Теги

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