42

我想用一个命令将一些相同类型的文件( .img)推送到手机的分区。/sdcard但是通配符不起作用:

adb push *.img /sdcard/

有什么办法可以实现吗?

4

5 回答 5

55

*.img文件复制到空目录,然后推送目录 ( adb push /tmp/images /storage/sdcard0)。adb将该目录中的所有文件推送到您指定的位置。

顺便说一句,/sdcard由于路径已经过时了很长一段时间,所以请确保您使用的目的地存在并且您的设备支持。大多数 Android 2.x/3.x/4.0 设备使用/mnt/sdcard; Android 4.1 使用/storage/sdcard0.

于 2012-10-15T17:57:26.070 回答
22

从我的脑海中回显文件......

for i in *.img; do echo $i; adb push "$i" /sdcard/; done;
于 2013-08-11T21:52:45.837 回答
11

假设您使用的是Windows,您可以使用 for 循环查找具有扩展名的文件,并在命令行中像这样使用该文件执行 adb push

for %i in (*.img) do adb push %i /sdcard/folderName/%i

如果您将其保存为批处理文件,请确保在“%i”之前添加一个额外的“%”,如下所示

 for %%i in (*.img) do adb push %%i /sdcard/folderName/%%i

如果你使用的是GNU/Linux,你可以使用这个基本上做同样事情的命令

for f in *.img; do adb push $f /sdcard/folderName/$f; done

希望它有所帮助:)

于 2016-03-30T07:09:37.257 回答
4

使用 find({}代表文件名):

find *.img -exec adb push {} /storage/sdcard0 \;
于 2014-01-09T13:12:52.763 回答
1

我有一个脚本(破折号,Ubuntu Precise)。

推:

#D=echo
D=
S=
if [ $1 == "-s" ]; then
    S="-s $2"
    shift
    shift
fi
if [ $# -lt 2 ]; then
    echo "Usage: $0 directory files..."
else
DIR=$1
shift
for f in $*
do
  #echo "Processing $DIR/$f file..."
  echo ~/aspt/adb ${S} push "$f" "$DIR/$f"
  ${D} ~/aspt/adb ${S} push "$f" "$DIR/$f"
done
fi

用法:

mpush /sdcard/ libMyLib.so
mpush /sdcard/ libFirst.so libSecond.so
mpush /sdcard/ *
mpush -s 109d8a6fe0678a3 /sdcard/ *

前两行留在那里进行调试:您可以将前两行更改为

D=echo
#D=

并让脚本打印adb push命令而不是执行它们。

更新:增加了推送到所有连接设备的能力(-all开关)

#D=echo
D=
S=
if [ $1 == "-2all" -o $1 == "-all" ]; then
  shift
  DEVICES=`~/aspt/adb devices | tail -n +2 | awk '{print $1}'`
  if [ $# -lt 2 ]; then
      echo "Usage: $0 [options] directory files..."
      echo "Options:"
      echo "-s device-id -- push to the specified device"
      echo "-all or -2all -- push to all devices"
  else
    DIR=$1
    shift
    for d in $DEVICES
    do
      for f in $*
      do
    #echo "Processing $DIR/$f file..."
    echo ~/aspt/adb -s $d push "$f" "$DIR/$f"
    ${D} ~/aspt/adb -s $d push "$f" "$DIR/$f"
      done
    done
  fi
else
  if [ $1 == "-s" ]; then
      S="-s $2"
      shift
      shift
  fi
  if [ $# -lt 2 ]; then
      echo "Usage: $0 [options] directory files..."
      echo "Options:"
      echo "-s device-id -- push to the specified device"
      echo "-all or -2all -- push to all devices"
  else
    DIR=$1
    shift
    for f in $*
    do
      #echo "Processing $DIR/$f file..."
      echo ~/aspt/adb ${S} push "$f" "$DIR/$f"
      ${D} ~/aspt/adb ${S} push "$f" "$DIR/$f"
    done
  fi
fi
于 2014-07-02T13:09:17.353 回答