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

adb使用管道符时出现cp cannot stat无文件或目录错误如何解决

核心原因

你遇到的报错本质是管道、重定向符号默认在本地Ubuntu shell解析,没有传递到手机端执行:

  • 你写的带|、>的命令中,只有adb shell后面紧跟的第一个命令会发送到手机运行,后续的管道、重定向逻辑都在你本地Ubuntu上执行,本地没有/mnt/shared/Pictures路径,自然会报文件不存在。
  • 直接写全路径的adb shell cp命令因为没有管道/重定向,整条命令都在手机端执行,所以能正常运行。

解决方法

把所有需要在手机端执行的命令逻辑用单引号整体包裹,作为adb shell的参数传入即可,这样整串命令的解析、执行都发生在手机端。

场景1:复制asd开头的文件为kkk开头

正确命令:

adb shell 'busybox find /mnt/shared/Pictures -name "asd*" | sed -e "p" -e "s/asd/kkk/" | xargs -n 2 cp'

注意:find的通配符参数asd*必须加引号,避免被本地Ubuntu shell提前展开。

场景2:将find结果写入ddr.txt

管道重定向写法

adb shell 'busybox find /mnt/shared/Pictures -name "asd*" > /mnt/shared/Pictures/ddr.txt'

-exec写法

adb shell 'busybox find /mnt/shared/Pictures -name "asd*" -exec echo {} > /mnt/shared/Pictures/ddr.txt \;'

兼容带空格的文件名(可选)

如果后续需要处理带空格的文件名,可以用-print0+-0参数规避分隔符问题:

adb shell 'busybox find /mnt/shared/Pictures -name "asd*" -print0 | sed -z -e "p" -e "s/asd/kkk/" | xargs -0 -n 2 cp'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:24:04