Эта ошибка выглядит так: Perl rename. Вам нужно использовать кавычки, но вам нужно только указать часть, которую вы хотите изменить, стиль поиска и замены. Синтаксис выглядит так:
rename -n 's/\.DAT/\.dat/' *
Удалите -n после тестирования, чтобы фактически переименовать файлы.
Чтобы включить скрытые файлы, измените настройку glob перед запуском команды: 2]
shopt -s dotglob
Если вы хотите переименовать файлы рекурсивно, вы можете использовать
shopt -s globstar
rename -n 's/\.DAT/\.dat/' **
или если в текущей директории или ниже текущей директории, которая не заканчивается .DAT, существует много путей, вам лучше указать эти пути во второй команде:
rename -n 's/\.DAT/\.dat/' **/*.DAT
Это будет быстрее, если ваши файлы имеют разные имена, не заканчивающиеся на .DAT. [1]
To выключите эти настройки, вы можете использовать shopt -u, например shopt -u globstar, но они отключены по умолчанию и будут отключены при открытии новой оболочки.
Если это приводит к чрезмерно длинному списку аргументов, вы можете использовать, например, find:
find -type f -name "*.DAT" -exec rename -n -- 's/\.DAT/\.dat/' {} \;
или лучше
find -type f -name "*.DAT" -exec rename -n -- 's/\.DAT/\.dat/' {} +
Использование find ... -exec с + выполняется быстрее, чем при использовании \;, потому что это создает список аргументов из найденных файлов. Первоначально я думал, что вам не удастся использовать его, потому что вы упомянули, что у вас проблема с argument list too long, но теперь я знаю, что этот список также будет умно разбит на несколько вызовов команды по мере необходимости избегайте этой проблемы [1] .
Поскольку rename будет обрабатывать каждое имя файла таким же образом, не имеет значения, как долго список аргументов, так как он может быть безопасно разделен через несколько вызовов. Если команда, которую вы используете с -exec, не принимает несколько аргументов или требует, чтобы ее аргументы находились в определенном порядке или по какой-либо другой причине разделение списка аргументов вызовет что-то нежелательное, вы можете использовать \;, что вызывает команда, которая будет вызываться один раз для каждого найденного файла (если список аргументов слишком длинный для других методов, это займет много времени!).
Большое спасибо Элиа Кагану за очень полезные предложения по улучшению этого ответа:
[1] Указание имен файлов при глобировании. [2] find ... -exec с + разделяет список аргументов.
Чтобы монтировать диски sdb и sdc во время загрузки ...
В terminal ...
sudo blkid # показать UUID
обратите внимание на UUID для sdb и sdc.sudo cp /etc/fstab /etc/fstab.bck # для создания резервной копии
sudo pico /etc/fstab # запустить редактор
отметить UUID для sdb и sdc. [!d5 ]# ntfs disks
UUID=8E3A804C3A8032EF /media/infinity/Document_2 ntfs-3g defaults 0 0
UUID=to_be_determined /media/infinity/Document_3 ntfs-3g defaults 0 0
изменить UUID на значения, найденные в blkid изменении имя your_username (до бесконечности) изменит имена «Document_2» и «Document_3», если необходимо,control + o #, чтобы сохранить изменения
control # to подтвердите filename
control + o #, чтобы выйти из редактора
sudo mount -a #, чтобы установить диски
Чтобы монтировать диски sdb и sdc во время загрузки ...
В terminal ...
sudo blkid # показать UUID
обратите внимание на UUID для sdb и sdc.sudo cp /etc/fstab /etc/fstab.bck # для создания резервной копии
sudo pico /etc/fstab # запустить редактор
отметить UUID для sdb и sdc.# ntfs disks
UUID=8E3A804C3A8032EF /media/infinity/Document_2 ntfs-3g defaults 0 0
UUID=to_be_determined /media/infinity/Document_3 ntfs-3g defaults 0 0
изменить UUID на значения, найденные в blkid изменении имя your_username (до бесконечности) изменит имена «Document_2» и «Document_3», если необходимо,control + o #, чтобы сохранить изменения
control # to подтвердите filename
control + o #, чтобы выйти из редактора
sudo mount -a #, чтобы установить диски
Чтобы монтировать диски sdb и sdc во время загрузки ...
В terminal ...
sudo blkid # показать UUID
обратите внимание на UUID для sdb и sdc.sudo cp /etc/fstab /etc/fstab.bck # для создания резервной копии
sudo pico /etc/fstab # запустить редактор
отметить UUID для sdb и sdc.# ntfs disks
UUID=8E3A804C3A8032EF /media/infinity/Document_2 ntfs-3g defaults 0 0
UUID=to_be_determined /media/infinity/Document_3 ntfs-3g defaults 0 0
изменить UUID на значения, найденные в blkid изменении имя your_username (до бесконечности) изменит имена «Document_2» и «Document_3», если необходимо,control + o #, чтобы сохранить изменения
control # to подтвердите filename
control + o #, чтобы выйти из редактора
sudo mount -a #, чтобы установить диски