Добавить расширение файла к файлам с bash - PullRequest
79 голосов
/ 24 мая 2011

Каков хороший способ добавить расширение ".jpg" к файлам без расширения с помощью bash?

Ответы [ 8 ]

98 голосов
/ 24 мая 2011
for f in *.jpg; do mv "$f" "${f%.jpg}"; done
for f in *; do mv "$f" "$f.jpg"; done
52 голосов
/ 24 мая 2011

Вы можете использовать переименование:

rename 's/(.*)/$1.jpg/' *
23 голосов
/ 24 мая 2011

Другой способ - без циклов

find . -type f -not -name "*.*" -print0 |\
xargs -0 file |\
grep  'JPEG image data' |\
sed 's/:.*//' |\
xargs -I % echo mv % %.jpg

Разбивка:

  • найти все файлы без расширения
  • проверить тип файла
  • фильтртолько для файлов JPG
  • удалить информацию о типе файла
  • xargs запускает "mv" для каждого файла

указанная выше команда предназначена для пробного запуска после него вы должны убрать "echo" перед mv

18 голосов
/ 21 июля 2016

Простой, перейдите в каталог, где находятся ваши файлы и:

for f in *;do mv $f $f.jpg;done
10 голосов
/ 09 марта 2017

пробный пуск:

 rename -n s/$/.jpg/ *

фактическое переименование:

 rename s/$/.jpg/ *
5 голосов
/ 24 мая 2011
find . | while read FILE; do if [ $(file --mime-type -b "$FILE") == "image/jpeg" ]; then mv "$FILE" "$FILE".jpg; fi; done;
0 голосов
/ 26 октября 2016
rename --dry-run * -a ".jpg" # test  
* -a ".jpg" # rename
0 голосов
/ 10 августа 2012

Райан Ли

Правильный синтаксис для добавления расширения файла к нескольким файлам в каталоге, которые не имеют расширение файла:

find . | while read FILE; do if [[ -n `file --mime-type "$FILE" | grep 'message/rfc822'` ]]; then  mv "$FILE" "$FILE".eml; fi; done;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...