gpt4 book ai didi

linux - 如何对文件进行 gzip 压缩

转载 作者:太空宇宙 更新时间:2023-11-04 06:03:21 25 4
gpt4 key购买 nike

我怎样才能压缩这个文件?我收到错误:

find /users/tnea01/logfile10.log -type f -exec sh -c \ 'gunzip /users/tnea01/logfile_archive/$(basename $0)_$(date -r {} +%F).gz $0' {} \;

这是我得到的错误:

gzip: /users/tnea01/logfile10.tar.gz: No such file or directory gzip: /users/tnea01/logfile10.log: unknown suffix -- ignored

最佳答案

如果您知道确切的文件名,您可能会执行以下操作:

find /users/tnea01 -maxdepth 1 -name '*.log' -type f -exec sh -c \
'for f; do
gzip -c <"$f" >"/users/tnea01/logfile_archive/${f##*/}_$(date -r "$f" +%F).gz"
done' _ {} +

解释移动部分:

  • 唯一安全的使用方式 sh -c是一个完全恒定的字符串;将变量替换到其中(包括文件名)会产生安全漏洞。因此,我们不在代码中使用任何类型的替换工具,而是将文件名作为额外参数传递。
  • for f; dofor f in "$@"; do 相同-- 它迭代所有命令行参数。
  • ${f**#/}评估最后一个 / 之后的所有内容在$f ;参见the bash-hackers page on parameter expansion .
  • 扩展,包括 $(date ...) ,需要位于双引号上下文中才能安全;在这里,我们将整个目标文件名放在这样的引号中。
<小时/>

但是,既然你这样做了,那就完全没有必要了。

f=/users/tnea01/logfile10.log
d=/users/tnea01/logfile_archive
gzip -c <"$f" >"$d/${f##*/}_$(date -r "$f" +%F).gz"

关于linux - 如何对文件进行 gzip 压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38647563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com