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

У меня есть несколько сотен файлов с именем hortstu01-01-14, а затем hortstu01-02-14 ... У вас есть идея?

Ну, половина файлов называется hortstu_01-03-14, а затем hortstu_01. -04-14

.

Это приводит к неправильной сортировке файлов по имени и получению их в порядке, который я бы предпочел. Поэтому я бы хотел переименовать те, которые не имеют подчеркивания, в hortstu_

Возможно ли сделать это в пакетной операции? Если так, то как?

7
задан 20 April 2014 в 23:54

3 ответа

Откройте терминал. Во-первых, двойная проверка у Вас есть жемчуг rename, путем ввода man rename. Внизу, должно сказать это perl v5.18.2 или подобный. (Я думаю, что Ubuntu всегда поставляет жемчуг rename, но другие дистрибутивы поставляют другие версии.)

Если это - правильная версия, то cd к каталогу, который содержит эти файлы. Затем выполненный

 rename 's/^hortstu/hortstu_/' hortstu[!_]*

Объяснение

  • Это переименует все файлы то соответствие hortstu[!_]*. Это означает файлы, которые запускаются с hortstu, и не имейте _ далее.
  • Это затем переименует их
    • нахождение ^hortstu (т.е. hortstu в начале строки)
    • замена его с hortstu_.
  • N.B. формат для hortstu[!_]* шарик удара. Формат для ^hortstu регулярное выражение.
11
ответ дан 20 April 2014 в 23:54

Или Bash, по которому один лайнер перемещается к папке с файлами и затем выполняет это в терминале:

for file in hortsu*;do echo "$file" "${file/_/-}";done;

В основном то, что это делает, для файлов с именем 'hortsu' сопровождается любыми символами '* ', повторите название "$file" и также название файла со всеми подчеркиваниями, замененными тире. Когда Вы чувствуете себя довольными в тот, просто заменяют echo cp для копирования файлов в новое имя.

А pythonic решение.

Попытка это в безопасном environement, возможно, скопируйте один или два файла в новую папку, чтобы протестировать, как она работает.

Сохраняют следующий код в gedit и дают ему имя с расширением файла '.py' что-то как rename_files_in_current_directory.py:

# copy this code into gedit and save it to the directory with the files in it
import os
# for files in the current directory ('.')
for file_names in os.listdir('.'):
    if '_' in file_names:
        # using os.system use cp (copy) to copy file_names to file-names by replacing
        # underscore with dash
        os.system('cp '+file_names+' '+file_names.replace('_','-'))

Удостоверяются, что Python установлен. 'склонные sudo - добираются, Python установки'

Перейдите к папке в терминале со сценарием и файлами и затем работайте:

python the_name_given_to_the_python_script.py

Примечание:

можно удалить тире в вышеупомянутых командах, и сценарии удалят подчеркивания.

for file in hortsu*;do cp "$file" "${file/_/}";done;

или в изменении сценария Python:

file_names.replace('_','-') к file_names.replace('_','')

0
ответ дан 20 April 2014 в 23:54

Для тех, кто предпочитает приложения GUI или точно так же, как способность предварительно просмотреть результат, Вы могли бы хотеть установить Thunar. Это - основной файловый менеджер XFCE; Вы находите его в репозиториях.

, Когда Вы выбираете несколько файлов в Thunar и переименовываете их (через контекстное меню или F2), Вы получаете тщательно продуманное диалоговое окно, которые поддерживают все виды, переименовывают операции. Можно решить проблему как так:

enter image description here

0
ответ дан 20 April 2014 в 23:54

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

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