You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用rsync的--files-from参数提示No such file or directory错误如何解决

问题原因
  • 多余的转义逻辑错误:你添加的sed 's/ /\ /g'步骤会给路径中的空格额外添加反斜杠转义,但rsync读取--files-from列表时按整行作为原始路径处理,不会解析行内转义符,最终传给系统的路径会多出不必要的反斜杠,导致找不到文件。
  • find逻辑不严谨:未指定-type d筛选目录,且或条件未用括号包裹,部分场景下会出现匹配结果不符合预期的问题;同时输出的绝对路径和你指定的根源目录/搭配时,macOS自带的老旧rsync 2.6.9版本存在兼容bug。
  • 参数缺失:未添加归档参数-a,无法和你之前使用的cp -a效果对齐,也可能导致目录读取权限异常。
解决方法

方案1(更稳定,无需组合find命令)

直接使用rsync自带的过滤规则实现需求,避开路径匹配坑:

rsync -a --include='*/' --include='*[Tt][Ee][Nn][Nn][Ii][Ss]*' --include='*[Ff][Oo][Oo][Tt][Bb][Aa][Ll]*' --exclude='*' /Volumes/GroupFolders/ ~/Desktop/new_folder/

如果后续你通过Homebrew升级到新版rsync,还可以用--ignore-case参数简化规则:

rsync -a --ignore-case --include='*/' --include='*tennis*' --include='*football*' --exclude='*' /Volumes/GroupFolders/ ~/Desktop/new_folder/

方案2(保留find+--files-from的写法)

修正路径逻辑和多余转义即可:

rsync -a --files-from=<(find /Volumes/GroupFolders -type d \( -iname '*tennis*' -o -iname '*football*' \)) /Volumes/GroupFolders/ ~/Desktop/new_folder/

修改点说明:

  1. 删除了多余的sed转义步骤
  2. 给find添加-type d只匹配目录,用括号包裹或条件保证匹配逻辑正确
  3. 将rsync源根目录改为/Volumes/GroupFolders/,和find的查找根目录对齐,避开老版本rsync的绝对路径兼容问题

内容的提问来源于stack exchange,提问作者Mike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 22:45:02