Я работаю с камерой Ethernet, которая поставляется с Busybox.
Одноплатный компьютер подключен к нему через RS232. SBC необходимо отправить одну команду на камеру, чтобы сделать снимок jpg, сохранить его на карте памяти CF и назовите его в последовательном порядке (0001, 0002 и т. Д.).
Это код, я использую, чтобы взять один снимок, без последовательного именования:Сценарий оболочки Linux с сохранением файла и последовательным именем файла
wget http://127.0.0.1/snap.php -O /mnt/0/snapfull`date +%d%m%y%H%M%S`.jpg
Мне нужно, чтобы файлы были названы последовательно. Это код, который я нашел here, который выполняет последовательное переименование для уже существующих файлов, но я заметил, что когда код выполняется еще раз после переименования нескольких файлов, перекрестное переименование может привести к удалению файлов (я запустил код, когда файлы от 0001.jpg до 0005.jpg были найдены в каталоге, и файл 0004.jpg был удален, потому что найденный файл cmd указан 0005 перед файлом 0004, поэтому он переименовал оба файла и файл 0004 был удален.)
find . -name '*.jpg' | awk 'BEGIN{ a=0 }{ printf "mv %s %04d.jpg\n", $0, a++ }' | dash
То, что я ищу, представляет собой один сценарий оболочки, который может запрашивать несколько раз в день SBC, чтобы камера делала снимок, сохраняя его и назовите его в последовательном порядке, основываясь на последнем номере используется (если последний файл 0005.jpg, следующее изображение wil l называться 0006.jpg).
Было бы здорово добавить эту возможность именования в строку ввода fisrt, которую я прикреплял, чтобы я мог включить ее в сценарий sh, который может быть вызван SBC.
Почему это помечено Баш, если вы используете либо BusyBox, при условии shell (что в лучшем случае может быть золой) или явно вызывать тире? –
Кроме того, использование awk для создания команд оболочки таким образом - очень и очень плохая практика. Подумайте, что произойдет, если у вас есть файл с именем '$ (rm -rf /). Jpg'. (Конечно, '/' должен быть разделителем каталогов, но поскольку вы делаете рекурсивную находку, это все равно будет работать). –
Чтение связанного ответа SO, я несколько огорчен тем, сколько «ответов» было предоставлено с этой и другими уязвимостями и ошибками. Однако принятый вопрос требует только дополнительного цитирования, чтобы быть безопасным, и я отредактировал его для исправления. –