linux - 查找文件并将它们 tar(带空格)

好的,这里的问题很简单。我正在研究一个简单的备份代码。它工作正常,除非文件中有空格。这就是我查找文件并将它们添加到 tar 存档的方式:

find . -type f | xargs tar -czvf backup.tar.gz 

问题是文件名中有空格,因为 tar 认为它是一个文件夹。基本上有没有一种方法可以在 find 的结果周围添加引号?或者用不同的方法来解决这个问题?

最佳答案

使用这个:

find . -type f -print0 | tar -czvf backup.tar.gz --null -T -

它会:

  • 处理带有空格、换行符、前导破折号和其他有趣内容的文件
  • 处理无限数量的文件
  • 不会像使用 tar -cxargs 那样反复覆盖您的 backup.tar.gz,当您有大量文件时会这样做

另见:

  • GNU tar manual
  • How can I build a tar from stdin? , 搜索 null

https://stackoverflow.com/questions/5891866/

相关文章:

linux - 获取后台进程的退出代码

python - 在 Python 中循环列表

linux - 如何在 Linux 上将行添加到文件末尾

python - 从字符串变量导入模块

linux - 查找连接到 Linux 机器的所有存储设备

python - 如何模拟请求和响应?

c - 为什么需要 .bss 段?

python - 谁能解释python的相对进口?

python - 子进程 Popen 和 call 有什么区别(我该如何使用它们)?

python - 为什么 Python 的 math.ceil() 和 math.floor() 操