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


0

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

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

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

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

Я вхожу в vim:

введите описание изображения здесь

Теперь, как мне перенаправить это обратно в терминал? И более того, как бы я использовал это в сочетании с 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 -

например.


если вы вручную переименовываете каждый файл таким образом, то это не пакетное переименование, а может быть достигнуто с помощью простых mvкоманд
phuclv

Это правда ... но я предполагал что-то вроде перехода в режим редактирования столбцов, чтобы сделать это намного быстрее (я просто не записал это в GIF), и обычно будет 30 файлов, а не 3.
ITA

1
Режим редактирования столбца будет бесполезным для имен , таких как file1_..., file2_..., ... file10_..., file11_.... На самом деле вам просто нужно научиться использовать регулярные выражения, а затем использовать его в каждой команде / приложениях, которые поддерживают регулярные выражения, в том числе vi. Обратите внимание, что lsрезультат не должен передаваться в другую команду
phuclv

Это не тот тип ответа, который я ищу. Сожалею.
ITA

+1 за ссылку, хотя, моей следующей остановкой был бы действительно Python.
ITA

Ответы:


1

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

brew install moreutils

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

введите описание изображения здесь

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


0

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

В частности:

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.