Reputation: 349
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?
Upvotes: 3
Views: 2555
Reputation: 17737
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.
Upvotes: 1
Reputation: 31676
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.
Upvotes: 2
Reputation:
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}'
Upvotes: 0