使用Linux Mint 13,我一直试图通过USB将ADB复制文件和目录到连接的Android。需要保留时间戳。
(我知道在Unix中,仅存储修改时间)。
从Googling得到了一个命令,但了解得不多。链接在下面。 https://android.stackexchange.com/questions/35580/how-can-i-transfer-photos-to-my-android-jelly-bean-device-while-preserving-the-o
在adb推送“ FROM”“ ANDROID_PHONE”之后,我使用以下命令:
find . | while read file; do timestamp_stat=$(stat -c "%y" "$file"); timestamp=$(date +"%Y%m%d.%H%M%S" -d "$timestamp_stat"); echo "$timestamp: $file"; adb shell su -c "touch -t $timestamp \"/sdcard/ANDROID_PHONE\""; done
我意识到上面的命令仅设法使用Touch复制文件名和目录中没有空格的时间戳。获取错误消息,例如。未知ID:R(带空格)。
我应该如何修改代码?
adb
外壳又扩展了。我仍然看不到该adb
命令应该如何知道该touch
命令应该作用在哪个文件上。或字符串有什么特别之处ANDROID_PHONE
吗?过去,我将Android安装为USB驱动器,并且使用常规copy(cp --preserve=all
)来维护时间戳,而无需诉诸adb
。我现在使用Android中的文件管理应用程序通过WiFi复制,这也保留了它们。
touch
Android上的命令应该是,touch -t $timestamp "/sdcard/ANDROID_PHONE/$file"
那么我可以看到问题是双重扩展,但是如果没有,"$file"
我将无法理解它应该如何工作。顺便说一句,我会注意到修改目录时间戳是不寻常的,因为每次创建,删除或重命名包含的文件或子目录时,它们都会更新。
file="$(line)"
代替read file
,"$file"
则将包含任何前导或尾随空格(或其他字符,除了换行符)。如果没有的话line
,可以使用等价的东西head -n 1
。但是,你应该不会有"$file"
在adb
电话吗?