Rasberry pi, как известно, недостаточно оборудован для USB, а USB 3G модем требует достаточно большой мощности. Может оказаться, что модему требуется примерно то количество, которое может доставить средний rpi, где это можно сделать, а другому нет (из-за различий, которые всегда будут происходить в производстве).
Я бы предложил вам попробовать подключить модемы 3G к USB-концентратору с питанием; это, вероятно, устранит вашу проблему.
-121--228895-
Этот вопрос был задан некоторое время назад, но он может кому-то помочь.
При синхронизации с сервером просто возникает одно и то же сообщение об ошибке. В моем случае отсутствовала папка на стороне сервера, с которой я хотел синхронизироваться. Создание папки решило проблему.
-121--133606-
У меня есть файл, первая строка которого начинается с
xml
[...] Если я попытаюсь убедиться, что начало строки/^ не соответствует
Возможно, что тексту предшествует Byte Order Mark (BOM) . Они распространены в файлах UTF-16 формата (особенно в системах Windows) и используются для указания длины байтов, содержащих 16-битные символы в файле.
Вы можете проверить это с помощью одного из многих шестнадцатеричных инструментов дампа ( шестнадцатеричный
, шестнадцатеричный
, od -c
для трех) и просмотреть первые несколько символов. Если в качестве первых двух символов вы видите FF FE
или FE FF
, это спецификация.
Поскольку, вероятно, лучше сохранить спецификацию на месте, лучше всего достичь решения, просто удалив требование начала строки из вашего RE.
Кстати, если вы пытаетесь извлечь данные из XML-файла, вам, как правило, лучше проанализировать их правильно, а не копаться в них с помощью RE. (Конечно, есть исключения, но я говорю об общем случае, который допускает неожиданное, но действительное переформатирование файла, структуры комментариев и т.д.)
Другой способ, предполагающий отсутствие пробелов в имени файла:
$ xargs -n2 echo mv -i <<<"$(sed '1d; s/$/.tar.gz/' names.txt)"
mv -i TDF.tar.gz Sample1.tar.gz
mv -i DFG.tar.gz Sample2.tar.gz
mv -i GHY.tar.gz Sample3.tar.gz
В sed '1d; s/$/.tar.gz/'
1d
удаляет самую первую строку входного имени файла names.txt
, затем s/$/.tar.gz/
добавляет .tar.gz
в конец каждой строки ($
указывает на конец строки ).
В xargs -n2
мы читаем два набора строк, разделенных пробелом/ или табуляцией.
Примечания:
Основываясь на выводе cat -e names.txt
, ваш файл не относится к типу Unix end -из формата строки -, чтобы преобразовать его в тип Unix, выполните dos2unix fileName
, затем примените указанную выше команду для переименования.
снять echo
для работы всухую -.
ссылка на Что такое ^M
и как от него избавиться?
Предполагая, что ваши имена никогда не содержат пробелов и что ваш names.txt
файл имеет заголовок в первой строке, как показано, вы можете сделать:
tail -n +2 names.txt | while read old new; do
mv -i "$old" "$new"
done
tail -n +2
напечатает все строки файла, начиная со второй, поэтому заголовок будет пропущен. Затем опция -i
для GNU mv
говорит ему запрашивать вас перед перезаписью существующего файла (на случай конфликта имен ).
Использование оболочки :Я предполагаю, что имена tar-файлов не содержат пробелов, а имена примеров не содержат пробелов:
{
read header
while read -r tarfile sample; do
if [[ -f "$tarfile" ]]; then
echo mv "$tarfile" "$sample.tar.gz"
fi
done
} < names.txt
Одной команды sed
должно быть достаточно, учитывая формат входного файла:
sed '1!{s/^/mv /;s/$/.tar.gz/e}' names.txt
Демо, безe
:
sed '1!{s/^/mv /;s/$/.tar.gz/}' names.txt
Выход:
Tar.gz_filenames Sample_Names
mv TDF.tar.gz Sample1.tar.gz
mv DFG.tar.gz Sample2.tar.gz
mv GHY.tar.gz Sample3.tar.gz