ADB copy the newest file

I am using the following command to copy the most recently added file from a connected device into the directory that I want:

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

But it can copy only the file that I specify.

How can I copy the newest file from sdcard/Robotium-Screenshots/ to D:\jenkins\jobs\ without specifying it by name?

Answers


If you use a bash-like shell, you can do:

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

You can get a bash-like shell through cygwin, msys, git for windows (based on msys). If you are on mac or linux, you already have a bash-like shell.


One way to do this would be to grab the file name using the following command:

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

Here is a one-liner which would pull the last modified file from a specified folder:

adb exec-out "cd /sdcard/Robotium-Screenshots; toybox ls -1t *.jpg 2>/dev/null | head -n1 | xargs cat" > D:\jenkins\jobs\latest.jpg

Known limitations:

  • It relies on ls command to do the sorting based on modification time. Historically Android devices had multiple sources for the coreutils, namely toolbox and toybox multi-binaries. The toolbox version did not support timestamp based sorting. That basically means that this won't work on anything older than Android 6.0.

  • It uses adb exec-out command to make sure that binary output does not get mangled by the tty. Make sure to update your platform-tools to the latest version.


Need Your Help

How to speed up loading of Android WebView when page served from AppsScript and CAJA?

google-apps-script android-webview google-caja

I have an AppsScript UI which loads in 2 - 3 seconds via my windows laptop in Chrome. When attempting to load the same UI via an Android App in a WebView the load takes 27 seconds. Using a New (2013)

Specific device not receiving Google Cloud Messaging notifications

android push-notification device google-cloud-messaging

I have an application where I'm implementing Google Cloud Messaging notifications, but in a specific device the messages don't arrive. This device has the minimum requirements to use GCM (Android v...