Наутилус умеет сам такое делать
Поясните пожалуйста: что именно "умеет" делать nautilus? В папки переходить, или файлы группами переименовывать? У меня на Ubuntu 16.04 c GNOME nautilus 3.14.3 в контекстных меню пункт "переименовать" при выделении нескольких файлов не активен, по F2 никакой реакции, в меню "Правка" пункт тоже не активным становится. Расширениями это можно решить, но в чистом виде, насколько я знаю, nautilus группового переименования делать не умеет.
Чисто теоретический интерес представляет конечно попытка переименовать все файлы „на месте“
zse, сейчас под скрипт для nautilus перепишу, и объясню куда положить. Будете выделять файлы мышкой, жамкать правую клавишу, выбирать скрипт в контекстном меню, после чего файлы будут переименовываться скриптом.
Пользователь добавил сообщение 18 Июля 2018, 02:51:47:
zse, сделал. Проверил. Работает. Чтобы работало и у Вас. Открываем терминал. Выполняем последовательно команды:
mkdir -p $HOME/.local/share/nautilus/scripts/
gedit $HOME/.local/share/nautilus/scripts/Rename
В окне редактора вводим код:
#!/bin/bash
# Скрипт для NAUTILUS
# "Групповое переименование выделенных файлов"
# В имени каждого файла знаки не из набора 0-9a-zA-Zа-яА-Я заменяются символом _
# Более одного пробела будут заменены одним символом _
# Операция выполняется только если выделены файлы и только если есть права на запись
# перед именем файла дописывается его порядковый номер в каталоге (начиная с 0),
# номер файла прописывается в формате 0001, число нулей динамическое - зависит
# от количества выделенных файлов (выделишь до 10 файлов - будет без нулей впереди,
# выделишь от 10 до 100 файлов - будет 2х значное число и т.д.)
# Скрипт следует положить в каталог $HOME/.local/share/nautilus (если такого нет - СОЗДАТЬ)
# Скрипту дать права на исполнение. Контекстное меню скриптов можно вызвать только на файлах!
SAVEIFS=$IFS # сохраняем текущий системный разделитель IFS
IFS=$'\n' # выставляем в качестве IFS символ перевода строки
if [[ $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS == "" ]]; then exit 0; fi # Если ничего не выбрано то сразу выходим из программы
k=$( echo -e "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | wc -l) # количество выбранных файлов
k=$( echo $k | wc -m ); (( k=k-1 )) # наше число нулей в общей длине строки
L=($( echo -e "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" )) # берем выбранные файлы массивом (мне так проще)
for (( i=0; i<${#L[@]}; i++ )) # перебираем выделение по одному файлу
do
if [ -w "${L[$i]}" ]; then # файл существует и есть права на запись
Oldname=$( basename -- "${L[$i]}" ) # получаем имя файла без пути к нему
Fpathname=${L[$i]/$Oldname/} # получаем путь к файлу
Fbasename=${Oldname%%.*} # отбрасываем расширение файла
Fbasename=$( echo $Fbasename | sed -e 's/\ \{1,\}/\ /g' ) # Заменяем более одного пробела одним пробелом
Fbasename=$( echo $Fbasename | sed -e 's/[^a-zA-Z0-9а-яА-Я]/_/g' ) # все знаки не из перечня заменяем на подчеркивания
Fbasename=${Oldname/${Oldname%%.*}/$Fbasename} # приписываем расширение
Fnumpref=$( printf "%0"$k"d\n" $i ) # форматируем цифровой префикс
mv "$Fpathname$Oldname" "$Fpathname$Fnumpref"\_"$Fbasename" # переименовываем файл
fi
done
IFS=$SAVEIFS #восстанавливаем исходный системный разделитель IFS
exit 0;
Сохраняем. Закрываем окно gedit. В терминале выполняем:
sudo chmod + $HOME/.local/share/nautilus/scripts/Rename
Ваши требования,
zse, вроде как удовлетворяет. Модернизируйте на свой вкус. Примеры работы. До выполнения скрипта:
>>> ls
afqkbr.m3u произвольный файл.m3u файл_2.m3u фаленёнок.m3u
file_3.m3u самый первый.m3u файл_4.m3u
еще один файл.m3u список.m3u фай??лик.m3u
еще файл other text.m3u условный файл.m3u файлище.m3u
после выполнения скрипта:
>>> ls
00_afqkbr.m3u 05_самый_первый.m3u 10_фай__лик.m3u
01_file_3.m3u 06_список.m3u 11_файлище.m3u
02_еще_один_файл.m3u 07_условный_файл.m3u 12_фаленёнок.m3u
03_еще_файл_other_text.m3u 08_файл_2.m3u
04_произвольный_файл.m3u 09_файл_4.m3u
Вот как это выглядит в Nautilus в моем случае:

У Вас будет пункт меню "Сценарии"/"Scripts" [появляется только при вызове контекстного меню на файле/группе файлов/папке, - на пустом месте в папке не работает в nautilus по состоянию на Ubuntu 16.04], где следует искать Rename (так мы назвали скрипт). Если название не устраивает - просто переименуйте файл

И да, я в курсе что вместо
Fbasename=$( echo $Fbasename | sed -e 's/\ \{1,\}/\ /g' )
Fbasename=$( echo $Fbasename | sed -e 's/[^a-zA-Z0-9а-яА-Я]/_/g' )
можно и просто
Fbasename=$( echo $Fbasename | sed -e 's/[^a-zA-Z0-9а-яА-Я]\{1,\}/_/g' )
(в необходимости экранирования {1,} я не уверен, возможно что сработало бы и
Fbasename=$( echo $Fbasename | sed -e 's/[^a-zA-Z0-9а-яА-Я]{1,}/_/g' )
Просто честно - не силен я в этом. Так, вникаю потихоньку...
