Я должен быть сильно тупым, потому что даже после чтения человека для переименовывают и тонны сценариев в качестве примера, которые другие дали на различных форумах, я все еще не могу даже начать понимать то, что на самом деле означает синтаксис для переименовать команды.
Я пытаюсь изучить команды удара, и я понимаю, как опасный это должно просто скопировать и команды выполнения с Интернета, на самом деле не понимая то, что и что еще более важно почему они "делают то, что они делают". Так, кто-то может помочь мне понять то, что условия для переименовать средней команды, так, чтобы я мог, создали мою собственную работу и точную команду?
Для специфических особенностей я загрузил более чем 40 видео YouTube в тот же каталог, и они все заканчивают в -fgrhegrvbfv
(у каждого есть полностью случайные символы после-). Я просто хочу удалить - и эти 12 символов после него в каждом имени файла.Большое спасибо!
Вот один из способов сделать это:
$ ls
file2-fdsa file-asdf
$ prename -nv 's/(.*)-(.*)/$1/' *-*
file-asdf renamed as file
file2-fdsa renamed as file2
Способ, которым это работает, состоит в том, что у нас есть две «группы» совпадающих символов. Итак, первое (.*)
будет тем, что есть до -
, а второе (.*)
будет тем, что было до -
. Мы можем обратиться к ним через $1
для группы 1 и $2
для группы 2 (которая не используется).
*-*
говорит оболочке взять все файлы с -
в нем и передать их в качестве аргументов команде rename
. Эта часть не имеет ничего общего с самим rename
, но с оболочкой. Это просто делает нашу жизнь немного проще.
Теперь можно прочитать всю команду: «Возьмите все файлы, в которых есть -
, и для каждого имени файла разбейте его на две группы и переименуйте этот файл только в первую группу» .
Обратите внимание на пару вещей:
-n
используется только для пробного запуска. Снимите этот флаг, если вы действительно хотите выполнить действие. -v
используется для получения подробного вывода о том, что фактически делает prename
prename
, то же самое, что и rename
. Есть только небольшая путаница с пакетами Debian и тем, что поддерживается. См. это для получения дополнительной информации. Обратите внимание, что некоторые оболочки, такие как ksh
, имеют собственную встроенную команду rename
, которая работает не так, как переименование perl. Первый параметр является отрывком Perl, который преобразовывает старое название (в $_
) к новому и остальной части параметров файлы для работы на. В Вашем случае Вы сделали бы это:
rename 's/-.{12}$//' *