Могу ли я переместить несколько файлов с терминальной командой "mv" на macOS? - PullRequest
1 голос
/ 21 апреля 2019

У меня проблема при попытке переместить несколько файлов. У меня есть 3 файла, которые мне нужно переместить, не помещая в подпапку.

Эти файлы имеют длинные имена, что усложняет задачу.

Пример:

Lógica_matemática_para_ingeniería_de_sistemas_y_co..._----_(Pg_81--102).pdf
Lógica_matemática_para_ingeniería_de_sistemas_y_co..._----_(Pg_103--122).pdf
Lógica_matemática_para_ingeniería_de_sistemas_y_co..._----_(Pg_123--155).pdf

Как решить эту проблему в терминале?

Я буду очень благодарен.

1 Ответ

0 голосов
/ 21 апреля 2019

Если вы просто пытаетесь упростить ввод длинных имен файлов в командной строке, в bash вы можете использовать клавишу tab , чтобы упростить ввод.например, введите начало команды, например, mv L, а затем нажмите клавишу tab , и оно автоматически завершится автоматически до того момента, когда имена будут неоднозначными (например, вплоть до номеров страниц).Автозаполнение делает ввод этих имен действительно простым.

Если вы хотите переименовать группу файлов, обычным трюком является

  • использование ls для получения спискасоответствующих файлов и используйте sed для создания сценария для переименования этих файлов, например:

    $ ls L* | sed 's/^[^0-9]*\([0-9]*\)--\([0-9]*\)).pdf/mv "&" Pages\1-\2.pdf/'
    

    , который ищет строку символов, которые не являются цифрами, затем захватывает цифры до и после -- и затем выводит строку mv, за которой следует оригинальное имя, за которым следует новое имя, включающее номера страниц.Я знаю, что это немного волосато, но это сила регулярных выражений.И на самом деле это еще не делает переименование, а скорее создает команды, которые могут выполнять переименование, если вы решите это сделать.

    В любом случае, это приводит к выводу текста, например:

    mv "Lógica_matemática_para_ingeniería_de_sistemas_y_co..._----_(Pg_103--122).pdf" Pages103-122.pdf
    mv "Lógica_matemática_para_ingeniería_de_sistemas_y_co..._----_(Pg_123--155).pdf" Pages123-155.pdf
    mv "Lógica_matemática_para_ingeniería_de_sistemas_y_co..._----_(Pg_81--102).pdf" Pages81-102.pdf
    

    Вы можете google sed учебники / примеры, если вы хотите выяснить широкий спектр доступных альтернатив.И, если это действительно сложно, есть альтернативы, включая awk и / или сценарии оболочки.

  • В любом случае, как только вы визуально осмотрите его и решите, что сгенерированные команды mv выглядят хорошоВы можете повторить процесс, на этот раз передавая вывод в sh, чтобы фактически выполнить переименование:

    $ ls L* | sed 's/^[^0-9]*\([0-9]*\)--\([0-9]*\)).pdf/mv "&" Pages\1-\2.pdf/' | sh
    

Существуют другие утилиты переименования файлов, которые можно установить, но старые-школы Unix обычно получают sed, которые делают процесс за нас.

...