亚行复制最新文件

时间:2015-07-31 08:31:06

标签: android windows command-line adb toybox

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

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

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

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

3 个答案:

答案 0 :(得分: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更新为最新版本。

答案 1 :(得分:1)

如果使用类似bash的外壳,则可以执行以下操作:

adb pull /sdcard/Robotium-Screenshots/`adb shell ls -t /sdcard/Robotium-Screenshots/ | head -1` ~/Downloads

您可以通过Windows的cygwin,msys,git获得基于bash的外壳(基于msys)。如果您使用的是Mac或Linux,则已经有一个类似bash的外壳。

答案 2 :(得分:0)

执行此操作的一种方法是使用以下命令获取文件名:

adb shell ls -lt /sdcard/Robotium-Screenshots | head -n2 | tail -n+2 | awk '{print $8}'