Как передать 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" \
' "{}" \;