3

我正在使用以下命令将最近添加的文件从连接的设备复制到我想要的目录中:

adb pull sdcard/Robotium-Screenshots/filename.jpg D:\jenkins\jobs\

但它只能复制我指定的文件。

如何在不指定名称的情况下将最新文件从复制sdcard/Robotium-Screenshots/到复制?D:\jenkins\jobs\

4

3 回答 3

1

这是一个单行程序,它将从指定文件夹中提取最后修改的文件:

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,即toolboxtoybox二进制文件。该toolbox版本不支持基于时间戳的排序。这基本上意味着这不适用于 Android 6.0 之前的任何设备。

  • 它使用adb exec-out命令来确保二进制输出不会被tty. 确保将您更新platform-tools到最新版本。

于 2016-12-03T16:16:08.650 回答
1

如果你使用类似 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。

于 2018-10-17T23:41:58.733 回答
0

一种方法是使用以下命令获取文件名:

adb shell ls -lt /sdcard/Robotium-Screenshots | head -n2 | tail -n+2 | awk '{print $8}'
于 2016-12-03T00:45:25.920 回答