我正在使用以下命令将最近添加的文件从连接的设备复制到我想要的目录中:
adb pull sdcard/Robotium-Screenshots/filename.jpg D:\jenkins\jobs\
但它只能复制我指定的文件。
如何在不指定名称的情况下将最新文件从复制sdcard/Robotium-Screenshots/
到复制?D:\jenkins\jobs\
我正在使用以下命令将最近添加的文件从连接的设备复制到我想要的目录中:
adb pull sdcard/Robotium-Screenshots/filename.jpg D:\jenkins\jobs\
但它只能复制我指定的文件。
如何在不指定名称的情况下将最新文件从复制sdcard/Robotium-Screenshots/
到复制?D:\jenkins\jobs\
这是一个单行程序,它将从指定文件夹中提取最后修改的文件:
adb exec-out "cd /sdcard/Robotium-Screenshots; toybox ls -1t *.jpg 2>/dev/null | head -n1 | xargs cat" > D:\jenkins\jobs\latest.jpg
已知限制:
它依靠ls
命令根据修改时间进行排序。从历史上看,Android 设备有多个来源coreutils
,即toolbox
多toybox
二进制文件。该toolbox
版本不支持基于时间戳的排序。这基本上意味着这不适用于 Android 6.0 之前的任何设备。
它使用adb exec-out
命令来确保二进制输出不会被tty
. 确保将您更新platform-tools
到最新版本。
如果你使用类似 bash 的 shell,你可以这样做:
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。
一种方法是使用以下命令获取文件名:
adb shell ls -lt /sdcard/Robotium-Screenshots | head -n2 | tail -n+2 | awk '{print $8}'