我正在尝试重命名日志文件并将它们打包成“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 -
' "{}" \;
我如何使用上述命令的修订版本来 tar 重命名的文件,或者还有其他方法(在 bash shell 中)?谢谢
答案1
如果您想.tar.gz
为 find 收集的每个日志文件创建一个单独的文件,则无需使用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" \
' "{}" \;