Como compactar vários arquivos ou pastas com o WinSCP e manter automaticamente a parte do nome do arquivo?

2

Estou usando o WinSCP e ele tem a opção de usar comandos personalizados remotamente.

Quero compactar alguns arquivos e pastas. O WinSCP possui um comando que pode compactar um arquivo ou uma pasta, mas eu tenho que inserir o nome do zip a ser chamado.

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

Gostaria de um comando que pegue o nome do arquivo e use-o para o zip.

Ou seja, thisnewvideo.mp4para se tornar thisnewvideo.zip.

Eu tenho muitos arquivos, então digitar cada título levará muito tempo.

Se for possível, eu gostaria de poder fazer vários arquivos de uma só vez e criar um arquivo zip separado para cada arquivo ou pasta, mantendo o arquivo ou título da pasta original.

Ele precisa ser um arquivo zip.

Ezdub
fonte

Respostas:

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

Tudo bem se você quiser vários zip

E monstro assim

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

se você quiser um grande arquivo zip com nome personalizado

byKos
fonte
0

O WinSCP não possui um padrão ou qualquer outro mecanismo para extrair o nome do arquivo sem extensão (ou substituir a extensão).

De qualquer forma, você pode usar qualquer função que o servidor forneça para obter o mesmo. Por exemplo, você pode substituir a extensão usando o sedcomando:

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

Isso produzirá:

 thisnewvideo.zip

Você pode mesclar isso no comando personalizado do WinSCP usando o operador backtick como:

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

Observe que o comando está usando o !padrão . Quando você o executa para um conjunto de arquivos selecionados, ele é executado uma vez para cada arquivo, produzindo um .ziparquivo para cada arquivo de origem.

Para alternativas, consulte: Extraia o nome do arquivo e a extensão no Bash .

Observe que eu consideraria melhor (e mais fácil) implementá-lo para acrescentar a .zipextensão (ou seja thisnewvideo.mp4.zip) ao final do nome do arquivo, em vez de substituí-la. Você evitaria conflitos de nome, se você tiver dois arquivos com o mesmo nome base, apenas uma extensão diferente. Mas eu não conheço suas restrições.

Martin Prikryl
fonte