2

Уже давно я не пишу сценарии для оболочки.

Я использую Bash на Ubuntu

У меня есть папка с множеством изображений jpg с произвольным именем, сгенерированным камерой. Я хочу переименовать все картинки, чтобы создать что-то вроде 1.jpg, 2.jpg, отсортированные по дате.

До сих пор я заказывал картинки вроде этой ls -alt которая выдает следующее:

-rwxr-xr-x 1 pc-vell pc-vell 3919618 2013-04-29 13:28 P4295809.JPG
-rwxr-xr-x 1 pc-vell pc-vell 4293911 2013-04-29 14:15 P4295810.JPG
-rwxr-xr-x 1 pc-vell pc-vell 3819811 2013-04-29 14:27 P4295811.JPG
-rw-r--r-- 1 pc-vell pc-vell 4993078 2013-04-29 23:13 DSCF0880.JPG

Так что я должен получить P4295809.JPG и переименуйте его в 1.JPG и так далее со следующими.

Я сократил вывод на это:

DSCF1045.JPG
DSCF1046.JPG
DSCF1048.JPG
DSCF1050.JPG
DSCF1053.JPG
DSCF1054.JPG
DSCF1055.JPG

Использование ls -altr | cut -c 55-100

Но сейчас я застрял. Я не знаю, как запрограммировать сценарий из этого ...

Можете ли вы помочь мне? Благодарю.

1 ответ1

3

Вам не нужно анализировать вывод ls , просто выполните цикл по тому, что находится в /your/dir/*.JPG выражение.

Это может работать:

i=1
for f in /your/dir/*.JPG
do
  mv "$f" "${i}.jpg"
  i=$((i+1))
done

Он зациклится на файлах, соответствующих *.JPG в /your/dir и переименуйте их в counter.jpg.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .