Гибкое переименование в терминале

506
ITA

Скажем, у меня есть папка с некоторыми файлами:

/Users/user101/Temp/rentest: ls fi_name1.txt fi_name2.txt fi_name3.txt 

Я ищу гибкий метод переименования. Например, если я делаю:

/Users/user101/Temp/rentest: ls | vim - 

Я вхожу в VIM:

enter image description here

Теперь, как мне перенаправить это обратно в терминал? И более того, как бы я использовал это в сочетании с mvкомандой для пакетного переименования файлов в каталоге?

Я знаю, что есть renameполезность, и большинство людей ответят, просто изучив кучу terminalкоманд, но я считаю, что это гораздо более интересный / гибкий способ сделать это. Кто-нибудь знает метод или пытался сделать это раньше?

РЕДАКТИРОВАТЬ : Существует тенденция, stackexchangeчтобы зацепиться за специфику вопроса. Но я не ищу ответы, которые говорят: «о, вы сделали файлы один за другим, так что просто используйте mv» или «о, режим редактирования столбцов позволит вам сделать только один вид изменений для всех файлов».

Суть здесь в том, что я не хочу искать Google каждый раз, когда хочу добавить префикс, постфикс или какой-то странный фикс в группу файлов в каталоге. И это может быть не все файлы.

/Users/ivanabraham/Temp/rentest: ls fi_name1.txt fi_name2.txt fi_name3.txt gi_name3.txt gi_name4.txt 

а также

ls | grep 'fi*' | vim - 

например.

0
если вы вручную переименовываете каждый файл таким образом, то это не пакетное переименование, а может быть достигнуто с помощью простых команд `mv` phuclv 6 лет назад 0
Это правда ... но я предполагал что-то вроде перехода в [режим редактирования столбца] (https://content.pivotal.io/blog/column-edit-mode-in-vi), чтобы сделать это намного быстрее (я просто Захватите это в GIF), и обычно там будет 30 файлов, а не 3. ITA 6 лет назад 0
Режим редактирования столбцов будет бесполезен для таких имен, как `file1 _...`, `file2 _...`, ... `file10 _...`, `file11 _...`. На самом деле вам просто нужно научиться использовать регулярные выражения, а затем использовать его в каждой команде / приложении, поддерживающем регулярное выражение, включая `vi`. Обратите внимание, что результат [`ls` не должен передаваться в другую команду] (https://unix.stackexchange.com/q/128985/444250) phuclv 6 лет назад 1
Это не тот тип ответа, который я ищу. Сожалею. ITA 6 лет назад 0
+1 за ссылку, хотя, моей следующей остановкой был бы действительно Python. ITA 6 лет назад 0
С помощью операций со столбцами в вашем текстовом редакторе или с помощью простого скрипта, такого как `for i in *; do echo "mv $ i $ i"; done> renaming.sh`, вы можете легко получить текстовый файл (сценарий оболочки), содержащий команды `mv`. Вы можете отредактировать его по своему усмотрению, а затем выполнить с помощью `sh renaming.sh`. egmont 6 лет назад 0

2 ответа на вопрос

1
ITA

Видир из Moreutils, кажется, делает то, что я искал. На MacOS вы можете сделать:

brew install moreutils 

как только вы Homebrewнастроили.

enter image description here

Учитывая, что кто-то написал расширения / приложения для этого, возможность сделать это из CLI кажется маловероятной, но если кому-то удастся это сделать, мне было бы очень интересно посмотреть, как они это сделали.

0
Heptite

Кажется, этот набор инструментов не поддерживается, но я все еще использую его: https://www.nongnu.org/renameutils/

В частности:

Программа qmv («быстрый ход») позволяет редактировать имена файлов в текстовом редакторе. Имена всех файлов в каталоге записываются в текстовый файл, который затем редактируется пользователем. Текстовый файл читается и анализируется, и изменения применяются к файлам.

qmvможет работать в нескольких режимах, но я предпочитаю использовать его с параметрами командной строки, в -fdoкоторых в редакторе указывается место назначения только в виде одного столбца.

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