Как переименовать все файлы в папках с рисунком

У меня есть куча файлов вроде:

bla.super.lol.S01E03.omg.bbq.mp4
bla.super.lol.S01E04.omg.bbq.mp4
bla.super.lol.s03e12.omg.bbq.mp4

Мне нужно переименовать их все как:

s01e03.mp4
s01e04.mp4
s03e12.mp4

Я пытался сделать это с for file in *; do mv $file ${file%%\.omg*}; done, но это удаляет только часть после S01E01, а не до нее, поэтому, пожалуйста, помогите

3
задан 1 May 2016 в 10:22

3 ответа

#!/bin/bash
IFS="\n"                               # Handle files with spaces in the names
for file in *.mp4; do
    newfile="${file/bla.super.lol./}"  # Strip the prefix you don't want
    newfile="${newfile/S/s}"           # Change the first S to an s
    newfile="${newfile/E/e}"           # Change the first E to an e
    newfile="${newfile.%omg.bbq*}"     # Strip the suffix you don't want
    newfile="${newfile}.mp4}"          # Tack on the file extension again
done
if [[ "$file" == "$newfile" ]]; then
    echo "Not renaming $file - no change decreed."
elif [[ -f "$newfile" ]]; then
    echo "Not renaming $file - $newfile already exists."
else
    mv -- "$file" "$newfile"           # Make the change
fi
2
ответ дан 1 May 2016 в 20:22
  • 1
    @AdonNaaman: необходимо использовать sudo команда для получения корневого доступа к файлу: sudo nano /path/to/file/, или sudo -H gedit /path/to/file, или использование команда из ответа, и т.д. – pa4080 29 September 2017 в 20:52

С rename (prename):

rename -n 's/^bla\.super\.lol\.[sS](\d+)[eE](\d+)\..*(\.mp4$)/s$1e$2$3/' *.mp4

-n делает сухое выполнение, если Вы удовлетворены потенциальным переименованием, просто удаляете -n для разрешения фактическому переименованию для происхождения:

rename 's/^bla\.super\.lol\.[sS](\d+)[eE](\d+)\..*(\.mp4$)/s$1e$2$3/' *.mp4

Пример:

$ ls -1
bla.super.lol.S01E03.omg.bbq.mp4
bla.super.lol.S01E04.omg.bbq.mp4
bla.super.lol.s03e12.omg.bbq.mp4

$ rename -n 's/^bla\.super\.lol\.[sS](\d+)[eE](\d+)\..*(\.mp4$)/s$1e$2$3/' *.mp4
bla.super.lol.S01E03.omg.bbq.mp4 renamed as s01e03.mp4
bla.super.lol.S01E04.omg.bbq.mp4 renamed as s01e04.mp4
bla.super.lol.s03e12.omg.bbq.mp4 renamed as s03e12.mp4
9
ответ дан 1 May 2016 в 20:22
  • 1
    как Вы редактируете его потому что это записанный что я don' t имеют полномочия – Adon Naaman 29 September 2017 в 20:46

Сохраните это простым..

rename 's/.*\.(\w+)\.omg\..*mp4$/\L$1.mp4/' *.mp4

Пример:

$ echo 'bla.super.lol.S01E03.omg.bbq.mp4' | perl -pe 's/.*\.(\w+)\.omg\..*mp4$/\L$1.mp4/'
s01e03.mp4
1
ответ дан 1 May 2016 в 20:22
  • 1
    И можно измениться также в System Settngs > программное обеспечение & Обновления (" программное обеспечение Properties" в 16,04) –  29 September 2017 в 22:25

Другие вопросы по тегам:

Похожие вопросы: