Как заархивировать несколько файлов или папок с помощью WinSCP и автоматически сохранить часть имени файла?

Вопрос или проблема

Я использую WinSCP, и у него есть возможность использовать пользовательские команды удаленно.

Я хочу заархивировать некоторые файлы и папки. В WinSCP есть команда, которая может заархивировать файл или папку, но мне нужно ввести имя архива.

zip -r "!?&Enter an Archive Name:?archive.zip!" !&

Я хотел бы команду, которая возьмет имя файла и использует его для архива.

Например, thisnewvideo.mp4 станет thisnewvideo.zip.

У меня много файлов, поэтому вводить каждое название займет много времени.

Если возможно, я хотел бы иметь возможность обрабатывать несколько файлов одновременно и создавать отдельный архив для каждого файла или папки, сохраняя их оригинальные названия.

Это должен быть zip-файл.

zip -r `echo ! | sed 's/\..*$/.zip/'` !

Это нормально, если вы хотите несколько архивов

И монстр как это

ls -q !& > list_1239.txt; zip -9 "!?&FileName:?archive.zip!" $(cat list_1239.txt); rm list_1239.txt

если вы хотите один большой zip-файл с пользовательским именем

WinSCP не имеет шаблона или любого другого механизма для извлечения имени файла без расширения (или замены расширения).

Тем не менее, вы можете использовать любую функцию, предоставляемую сервером, чтобы добиться того же результата. Например, вы можете заменить расширение, используя команду sed:

echo thisnewvideo.mp4 | sed 's/\..*$/.zip/'

Это выдаст:

 thisnewvideo.zip

Вы можете внедрить это в пользовательскую команду WinSCP, используя оператор обратных кавычек, например:

zip -r `echo ! | sed 's/\..*$/.zip/'` !

Обратите внимание, что команда использует ! шаблон. Когда вы выполняете ее для набора выбранных файлов, она выполняется один раз для каждого файла, создавая один .zip файл для каждого исходного файла.

Для альтернатив смотрите: Извлечение имени файла и расширения в Bash.

Обратите внимание, что я бы считал лучше (и проще) просто добавить расширение .zip (т.е. thisnewvideo.mp4.zip) в конец имени файла, вместо замены расширения. Это поможет избежать конфликтов имен, если у вас есть два файла с одним и тем же базовым именем, просто с разными расширениями. Но я не знаю ваших ограничений.

Ответ или решение

Чтобы сжать (заархивировать) несколько файлов или папок с помощью WinSCP и автоматически использовать часть названия файла в качестве имени архива, вы можете воспользоваться следующими инструкциями. Данный подход позволяет автоматически создавать zip-архив для каждого файла или папки, сохраняя при этом исходное название.

Шаги для создания zip-архивов с использованием WinSCP:

  1. Конфигурация Пользовательской команды в WinSCP:

    • Откройте WinSCP и перейдите к меню, где настроены команды для удаленного выполнения на вашем сервере.
    • Создайте новую пользовательскую команду. Введите следующую команду, чтобы автоматически использовать имя файла:
      zip -r `echo ! | sed 's/\..*$/.zip/'` !
    • Эта команда с помощью sed заменяет расширение файла на .zip, создавая файл архива с тем же именем, но другим расширением.
  2. Принципы использования команды:

    • ! — знак в WinSCP, который обозначает текущий выбираемый файл. Команда автоматически подставляется для каждого выделенного файла.
    • sed 's/\..*$/.zip/' — команда замены, которая удаляет оригинальное расширение и добавляет .zip.
  3. Оптимизация процесса:

    • Данная команда будет работать для каждого выделенного файла отдельно, создавая отдельный zip-архив. Это удобно, если вам нужно обработать большое количество файлов без ручного ввода каждой команды.
    • Если возможно дублирование названий основного файла с разными расширениями (например, .mp4 и .txt), рассмотрите добавление двоичного расширения, чтобы избежать конфликтов.

Возможные дополнительные улучшения:

  • Если вы предпочитаете сохранять и оригинальные расширения, добавляя .zip в конец, команда может быть скорректирована следующим образом без замены существующего расширения:
    zip -r `echo !`.zip !
  • Убедитесь, что на сервере установлены и настроены необходимые утилиты для работы с zip-архивами и командой sed, чтобы исключить возможные ошибки при выполнении команд.

SEO-оптимизация и заключение:

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

Оцените материал
Добавить комментарий

Капча загружается...