Используя Linux Mint 13, я пытался ADB скопировать файлы и каталоги на подключенный Android через USB. Необходимо сохранить временные метки.
(Я знаю, что в Unix хранится только измененное время).
Получил команду от Google, но не очень понимаю. Ссылка ниже. https://android.stackexchange.com/questions/35580/how-can-i-transfer-photos-to-my-android-jelly-bean-device-while-preserving-the-o
После adb нажмите "ОТ" "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 для копирования меток времени для имен файлов и каталогов без пробелов в них. Получить сообщения об ошибках, например. Неизвестный идентификатор: R для тех, кто с пробелами.
Как я должен изменить код?
adb
оболочка снова расширяется. Я до сих пор не понимаю, как adb
Команда должна знать, какой файл touch
команда должна действовать дальше; или есть что-то особенное в строке ANDROID_PHONE
? В прошлом я монтировал Android как USB-накопитель, и я использовал обычную копию ( cp --preserve=all
) поддерживать отметки времени, не прибегая к adb
, Теперь я использую приложение для управления файлами в Android для копирования по WiFi, и это также сохраняет их.
touch
команда на андроиде должна быть touch -t $timestamp "/sdcard/ANDROID_PHONE/$file"
тогда я вижу, что проблема двойного расширения, но без "$file"
тогда я не могу понять, как это должно работать. Попутно я хотел бы отметить, что необычно изменять метки времени каталога, потому что они обновляются каждый раз, когда включаемый файл или подкаталог создается, удаляется или переименовывается.
file="$(line)"
вместоread file
, затем"$file"
будет содержать любые начальные или конечные пробелы (или другие символы, кроме новых строк). Если у вас нетline
Вы можете использовать эквивалентhead -n 1
, Но вы не должны иметь"$file"
вadb
вызов?