Как передать tar.gz файл после переименования с помощью xargs?

Я пытаюсь переименовать файлы журналов и сделать их tar как 'tar.gz', я закончил приведенной ниже командой, но она не получает переименованное имя файла из STDIN (вывод команды mv) и вызывает tar команда для создания пустых файлов,

find -type f -name "logs*" -exec bash -c ' \
     mv "$0" "$0_$(date -r "$0" +"%Y%m%d%H%M%S")"| \
     xargs tar -czf "$0_$(date -r "$0" +"%Y%m%d%H%M%S")".tar.gz --null -T - 
' "{}" \;

Как мне переименовать переименованный файл с помощью команды rev, указанной выше, или есть другие способы (в оболочке bash)? Спасибо

1 ответ

Решение

Если вы хотите создать отдельный .tar.gz файл для каждого файла журнала, который находит сборы, вам не нужно использовать xargs, Вы можете сохранить датированное добавленное имя каждого файла в переменную (в данном случае f) и повторно использовать новое имя в tar команда. Это также оставит ваши переименованные файлы на месте.

find . -type f -iname "log*" -exec bash -c ' \
    f="${0}_$(date -r "$0" +"%Y%m%d%H%M%S")"; \
    mv "$0" "$f" && tar -czf "${f}.tar.gz" "$f" \
' "{}" \;
Другие вопросы по тегам