Вопрос или проблема
Я пытаюсь добавить пользовательскую команду в Nemo (Linux Mint). У меня есть следующий скрипт, который я запускаю через терминал (путем ручного изменения директорий):
ls | cat -n | while read n f; do mv "$f" "$n.jpg"; done
Цель заключается в том, чтобы взять каждый файл в папке (все изображения) и массово переименовать их в последовательном порядке (1.jpg, 2.jpg и т.д.). Открывать терминал в каждой папке и затем запускать команду сложно, поэтому я хочу добавить пользовательскую команду в Nemo. Я пробовал следующий файл .nemo_action:
[Nemo Action]
Name=Последовательное Переименование
Comment=Последовательное Переименование Всех Файлов В Папке
Exec=ls | cat -n | while read n f; do mv "$f" "$n.jpg"; done
Icon-Name=Terminal
Selection=s
Extensions=dir;
К сожалению, я столкнулся с проблемой, что команда, похоже, выполняется в папке моего пользователя, переименовывая мои папки Документы, Музыка, Видео, Картинки и Загрузки в 1.jpg, 2.jpg и т.д.
У кого-нибудь есть решение для этого? В идеале я хочу кликнуть правой кнопкой мыши на папку и нажать эту кнопку действия, чтобы она выполнялась.
Мне оказалось проще, чтобы действие nemo вызывало отдельный скрипт. Итак, создайте файл CustomScript.sh с вашими действиями в нем, а затем просто настройте ваше пользовательское действие nemo на вызов скрипта. Вы можете передать имя папки в скрипт.
Таким образом, ваше действие nemo будет содержать строку:
Exec=CustomScript.sh %F
Ответ или решение
Создание пользовательского действия в Nemo для массового переименования файлов
Если вы хотите упростить процесс массового переименования файлов в Nemo, существуют эффективные решения, которые помогут вам достичь этой цели, не открывая терминал для каждой папки отдельно. В данном ответе мы рассмотрим, как создать пользовательское действие в Nemo, которое будет вызывать отдельный скрипт для переименования файлов в порядке их появления.
Шаг 1: Создание скрипта
Первым делом необходимо создать Bash-скрипт, который будет содержать ваши команды для переименования файлов. Давайте создадим файл CustomScript.sh
с необходимым содержимым. Откройте ваш терминал и выполните следующие команды:
cd ~
nano CustomScript.sh
После открытия редактора вставьте следующий код:
#!/bin/bash
# Перейти в указанную директорию
cd "$1" || exit
# Переименовывание файлов
ls | cat -n | while read n f; do mv "$f" "$n.jpg"; done
Сохраните файл и выйдите из редактора (CTRL+X, затем Y и ENTER, если вы используете nano).
Шаг 2: Сделать скрипт исполняемым
Для того чтобы ваш скрипт можно было выполнять, необходимо изменить его разрешения:
chmod +x ~/CustomScript.sh
Шаг 3: Создание пользовательского действия в Nemo
Теперь давайте создадим пользовательское действие для Nemo. Для этого вам нужно создать файл .nemo_action
. Выполните команду:
nano ~/.local/share/nemo/actions/sequential_rename.action
После открытия редактора вставьте следующий код в файл:
[Nemo Action]
Name=Sequential Rename
Comment=Sequentially Rename All Files In Folder
Exec=/home/yourusername/CustomScript.sh %F
Icon-Name=terminal
Selection=dir;
Extensions=dir;
Не забудьте заменить yourusername
на ваше имя пользователя, например, если ваше имя пользователя — Alex, строка должна выглядеть так:
Exec=/home/Alex/CustomScript.sh %F
Сохраните файл и закройте редактор.
Шаг 4: Использование пользовательского действия
Теперь, когда все настроено, вы сможете использовать ваше новое действие. Откройте Nemo, выберите папку с изображениями, щелкните правой кнопкой мыши и выберите опцию «Sequential Rename».
Скрипт автоматически выполнится в контексте выбранной папки, и все файлы будут переименованы в формате 1.jpg, 2.jpg и так далее.
Заключение
Создание пользовательских действий в Nemo позволяет значительно упростить выполнение рутинных задач, таких как массовое переименование файлов. Используя приведенные выше шаги, вы сможете создать свое собственное действие, которое эффективно работает в контексте выбранной директории, избегая неуместных изменений в других каталогах. Это делает работу с файлами более удобной и эффективной, а также существенно экономит ваши время и усилия.