Linux tar 具有模式匹配和删除前导路径

标签 linux tar

我正在尝试归档位于/var/log 目录中的所有 .log 文件,并在创建时删除文件上的所有前导路径。

我发现我可以通过以下方式轻松归档所有 .log 文件:

tar -cvf ~/backup.tar /var/log/*.log

不幸的是,在网上搜索后,删除前导路径的方法是使用 -C 更改命令的目录,但现在它无法识别 *.log 并认为 * 是文字。

使用:

tar -cvf ~/backup.tar -C /var/log *.log

我收到一条错误消息,指出找不到文件 *.log

我想我的语法一定是关闭的,并且我尝试了对语法的一些更改,但没有成功。

最佳答案

使用find将文件传递给tar:

find /var/log -name *.log -printf '%P\n' |\
  tar -C /var/log -czf backup.tar.gz -T -
  • Find 将查找 *.log 文件,并使用 printf 格式化输出以仅显示文件名。
  • tar 的“-T -”指示从标准输入读取文件名

关于Linux tar 具有模式匹配和删除前导路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49061363/

相关文章:

linux - 我如何压缩 proc 文件系统?

c - 使用 'system' 调用在 C 中执行 WGET 命令(linux)

ruby - 安装 ffi 时出错

c - 使用 splice 系统调用没有输出

compression - 如何在 lz4 中使用 tar?

java - 如何获取 GZIP 中 TAR 的名称以及 TAR 的数量

linux - 杂乱和重复的输出

linux - 修改linux协议(protocol)表

bash - tar -h 带有指向自身的符号链接(symbolic link)

linux - 如何使用 Bash 在目录中压缩文件