任何 Linux 软件包可以帮助我处理文件名中的空格和括号

任何 Linux 软件包可以帮助我处理文件名中的空格和括号

我有一个 ubuntu 备份文件服务器。我备份了在 Windows 系统上使用的 CAD 文件。不用说,用户在文件名中使用空格和括号非常多。尝试从备份中 rsync 文件是一场噩梦。以下是示例:

sudo rsync-a[电子邮件保护]:/media/bak/bim/daily.5/CURRENT JOBS/17/17142 大楼 (ECR) - 55900 EL CAMINO REAL, MENLO PARK/定价/定价 02-15-2018(预算更新大楼 1、2 和 3)/01_Drawings/500 ECR - 办公楼 _2/500 ECR - B2 - BS 1.8.18 - Civil Set.pdf。

除了简单地添加引号之外,还有其他方法可以处理此类名称吗?因为我必须转义括号和空格?我希望有一个软件包可以让 Linux 处理此类文件名?

谢谢

答案1

rsync 有大量选项可用于控制基于 glob 类模式的文件选择。例如, --include-from=~/restore-pattern.txt 文件可能包含换行符分隔模式,这些模式刚好足以识别文件:

/media/bak/bim/daily.5/CURRENT JOBS/17/17142**02-15-2018**500 ECR - B2 - BS 1.8.18 - Civil Set.pdf

当 rsync 读取文件时,它不需要对 shell 安全。注意**匹配斜线,这很方便,但要确认这只匹配您想要的内容。

不幸的是,类似 POSIX 的环境没有一致的方式来正确处理文件名。请参阅 David Wheeler 的 Filenames 和Shell 中的路径名:如何正确使用烦人的细节。特别是,null 是唯一保证不会出现在路径名中的字符。大多数 shell 脚本不会处理这个问题,它们会在输入文件名中包含换行符的极端情况下中断。

用空分隔的路径名是最大化工具接受的文件名的一种方法。使用 GNU findutils 和 rysnc,可以用来find -print0 写出文件名列表,然后 rsync --from0 --files-from= 传输这些文件。在进行恢复时,保存准确的文件列表可能会对将来的参考有用。

相关内容