Jak skompresować wiele plików lub folderów za pomocą WinSCP i automatycznie zachować część nazwy pliku?

2

Korzystam z WinSCP i ma możliwość zdalnego używania poleceń niestandardowych.

Chcę skompresować niektóre pliki i foldery. WinSCP ma komendę, która może spakować plik lub folder, ale muszę wprowadzić nazwę, która ma zostać wywołana.

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

Chciałbym polecenie, które pobierze nazwę pliku i użyje go do zip.

To znaczy. thisnewvideo.mp4 zostać thisnewvideo.zip.

Mam wiele plików, więc wpisanie każdego tytułu zajmie dużo czasu.

Jeśli to możliwe, chciałbym móc wykonać wiele plików jednocześnie i utworzyć osobny plik zip dla każdego pliku lub folderu, zachowując oryginalny tytuł pliku lub folderu.

Musi to być plik zip.

Ezdub
źródło

Odpowiedzi:

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

Jest dobrze, jeśli chcesz wielokrotnego zip

I taki potwór

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

jeśli chcesz jeden duży plik zip o niestandardowej nazwie

byKos
źródło
0

WinSCP nie ma wzorca ani żadnego innego mechanizmu wyodrębniania nazwy pliku bez rozszerzenia (lub zastąpienia rozszerzenia).

W każdym razie możesz użyć dowolnej funkcji, którą zapewnia serwer, aby osiągnąć to samo. Na przykład możesz zastąpić rozszerzenie za pomocą sed dowództwo:

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

Spowoduje to wyświetlenie:

 thisnewvideo.zip

Możesz połączyć to w niestandardowe polecenie WinSCP za pomocą operatora wstecznego, takiego jak:

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

Zauważ, że polecenie używa ! wzór . Gdy wykonasz go dla zestawu wybranych plików, zostanie on wykonany raz dla każdego pliku, tworząc jeden .zip plik dla każdego pliku źródłowego.

Dla alternatyw patrz: Wyodrębnij nazwę pliku i rozszerzenie w Bash .

Zauważ, że lepiej (i łatwiej) zaimplementować go, aby po prostu dodać .zip rozszerzenie (tj. thisnewvideo.mp4.zip ) na końcu nazwy pliku, zamiast zastępowania rozszerzenia. Unikniesz konfliktów nazw, jeśli masz dwa pliki o tej samej nazwie podstawowej, tylko inne rozszerzenie. Ale nie znam twoich ograniczeń.

Martin Prikryl
źródło