我正在尝试归档位于/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/