Как переименовать группу файлов с тем, что выглядит как путь к файлу Windows в их именах

Я получил кучу файлов с испорченным именем файла. Все имена файлов имеют одинаковое начало, которое выглядит как каталоги файлов Windows. Проблема в том, что существует более 700 файлов, и я действительно не хочу просматривать их вручную и переименовывать вручную. Это примеры имен файлов (Примечание: ни у одного из них нет файловых каталогов):

G:some\really\long\file\path\then\the\name1.jpg
G:some\really\long\file\path\then\the\name2.png
G:some\really\long\file\path\then\the\filename.txt
G:some\really\long\file\path\then\the\file_name.mov
...

Важный вывод заключается в том, что у каждого файла есть G:some\really\long\file\path\then\the\ перед именем файла, которое я хотел бы.

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

name1.jpg
name2.png
filename.txt
file_name.mov

Я пробовал команду rename и не увенчался успехом. Я все еще новичок в Linux и действительно не знаю, как с этим справиться или что действительно нужно гуглить. Любая помощь будет оценена.

9
задан 24 August 2017 в 08:28

3 ответа

Я просто удалил все до последней обратной косой черты с rename

$ rename -n 's/.*\\//' G*
rename(G:some\really\long\file\path\then\the\file_name.mov, file_name.mov)
rename(G:some\really\long\file\path\then\the\filename.txt, filename.txt)
rename(G:some\really\long\file\path\then\the\name1.jpg, name1.jpg)
rename(G:some\really\long\file\path\then\the\name2.png, name2.png)

, Удаляют -n после тестирования для фактического переименования файлов.

Примечания

  • -n ничего не делают, просто печатают то, что будет изменено
  • s/old/new замена old с new
  • .* любое количество любых символов
  • \\, первая обратная косая черта должна выйти из второго.
  • , Так как regex являются жадными, это выражение .*\\ ест все предыдущие обратные косые черты также.
  • , Так как последние два разделителя // пусты, все подобранное в поисковой части удалено
18
ответ дан 24 August 2017 в 18:28

Можно сделать это в чистом bash использование расширение параметра оболочки .

${file##*\\} (cut-up-to-last-prefix) разделяет все от запуска имени файла до в последний раз \ замеченный.

for file in *; do
    mv -v "$file" "${file##*\\}";
done

переименовать результаты:

‘G:some\\really\\long\\file\\path\\then\\the\\file_name.mov’ -> ‘file_name.mov’
‘G:some\\really\\long\\file\\path\\then\\the\\filename.txt’ -> ‘filename.txt’
‘G:some\\really\\long\\file\\path\\then\\the\\name1.jpg’ -> ‘name1.jpg’
‘G:some\\really\\long\\file\\path\\then\\the\\name2.png’ -> ‘name2.png’
10
ответ дан 24 August 2017 в 18:28

Если Вы ищете GUI решения, существует много объемных приложений переименования. Я предложил бы Thunar, который является файловым менеджером по умолчанию для Xfce. Это идет с удобным объемным инструментом переименования. Можно установить Thunar путем выполнения следующей команды в Терминале:

sudo apt-get install thunar

Вы, вероятно, сможете установить из программного обеспечения Ubuntu также.

, Как использовать утилиту

  1. , После того как Вы установили Thunar, запуститесь утилита Bulk Rename .
  2. Нажимают + значок и добавляют файлы, которые Вы хотите переименовать.
  3. Нажимают на выпадающее поле чуть ниже списка выбранных файлов и выбирают Поиск & Замена .
  4. В эти Поиск: поле входит G:some\really\long\file\path\then\the\ (часть, Вы хотите избавиться от), уезжайте эти Замена: пустое поле. Необходимо видеть предварительный просмотр изменений в столбец New Name .
  5. Для применения изменений нажимают кнопка Rename Files .

, Кроме того Поиск & Замена эта утилита поддерживает следующие действия:

  • Вставляют Дату / Время
  • Вставляет / Перезапись
  • , Нумерация
  • Удаляет Символы
  • Верхний регистр / Нижний регистр
6
ответ дан 24 August 2017 в 18:28

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

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