我使用以下脚本将带有前缀的文件夹old_
及其内容放在 USB 硬盘上。由于某种原因,rsync
创建一个无名文件夹,将数据复制到其中。
rsync -vrhm --stats --progress --include='**/' --include='**/old_*/**' --exclude='@Recycle' --exclude='*' /share/Projekte/ /share/02-18-Harburg/
我怎样才能改变这个?
另外,我想知道是否可以rsync
删除以前从源传输的这些文件?
编辑:
这是我尝试选项卡目录时得到的结果:
$ cd 02-18-Harburg/^M/2017/
该文件夹具有以下名称:
$ ls -lisah
total 0
27 0 drwxr-xr-x 1 admin administrators 0 2018-05-18 13:32 ?/
答案1
in^M
是02-18-Harburg/^M/2017/
回车符。您的脚本具有 Windows 风格的 CRLF 行结尾,因此路径rsync
显示为.它尽职尽责地创建了一条具有该名称的路径。/share/02-18-Harburg/<CR>
(该^M
符号通常指的是击中Ctrl+M。将回车符作为字符的更常见的符号是\r
。)
dos2unix
用, 或 之类的内容修复脚本中结尾的行sed -i 's/\r//' script
(假设是 GNU sed)。
ls
不喜欢将文件名中的特殊字符输出到终端,因此它打印 a ?
。这实际上是一件好事,因为无论如何你都无法在终端上看到真正的 CR。用于ls --quoting-style=shell-escape
让它以不太明确的格式打印文件名。