Android 复制最新的文件
我正在使用以下命令将最近添加的文件从连接的设备复制到所需的目录中:Android 复制最新的文件,android,windows,command-line,adb,toybox,Android,Windows,Command Line,Adb,Toybox,我正在使用以下命令将最近添加的文件从连接的设备复制到所需的目录中: adb pull sdcard/Robotium-Screenshots/filename.jpg D:\jenkins\jobs\ 但它只能复制我指定的文件 如何将最新文件从sdcard/Robotium Screenshots/复制到D:\jenkins\jobs\,而不按名称指定它?一种方法是使用以下命令获取文件名: adb shell ls -lt /sdcard/Robotium-Screenshots | head
adb pull sdcard/Robotium-Screenshots/filename.jpg D:\jenkins\jobs\
但它只能复制我指定的文件
如何将最新文件从
sdcard/Robotium Screenshots/
复制到D:\jenkins\jobs\
,而不按名称指定它?一种方法是使用以下命令获取文件名:
adb shell ls -lt /sdcard/Robotium-Screenshots | head -n2 | tail -n+2 | awk '{print $8}'
下面是一个单行程序,它将从指定文件夹中提取上次修改的文件:
adb exec-out "cd /sdcard/Robotium-Screenshots; toybox ls -1t *.jpg 2>/dev/null | head -n1 | xargs cat" > D:\jenkins\jobs\latest.jpg
已知的限制:
- 它依靠
命令根据修改时间进行排序。历史上,Android设备有多个ls
源,即coreutils
和toolbox
多二进制文件。toybox
版本不支持基于时间戳的排序。这基本上意味着这在Android 6.0之前的任何版本上都不起作用工具箱
- 它使用
命令确保二进制输出不会被adb exec out
损坏。确保将tty
更新至最新版本平台工具
adb pull /sdcard/Robotium-Screenshots/`adb shell ls -t /sdcard/Robotium-Screenshots/ | head -1` ~/Downloads
您可以通过cygwin、msys、git for windows(基于msys)获得类似bash的shell。如果您在mac或linux上,您已经有了一个类似bash的shell。我认为您可能需要编写一个脚本来识别第一个文件,然后使用windows执行adb pullvTad,在您的命令中,
head
,tail
和awk
正在主机端运行。通过使用-1
而不是-l
选项,您可以同时消除tail
和awk
。另外,当您需要将输入限制到特定行,并且您已经在使用awk
-不需要使用头和尾组合-只需使用awk
的内置NR
变量即可