2012-11-05 19 views

Odpowiedz

40

Komenda używasz potrwa zip na każdy plik osobno, spróbuj tego:

find . -name <name> -print | zip name.zip [email protected] 

[email protected] mówi zip do odczytu plików z wejścia, od człowieka zip(1):

- @ pliku listy. Jeśli lista plików jest określona jako - @ [Nie na MacOS], zip pobiera listę plików wejściowych ze standardowego wejścia zamiast z wiersza poleceń.

+0

czy możesz to wyjaśnić - symbol @? – LOGAN

+0

@LOGAN tak, sprawdź aktualizację – iabdalkader

+0

@LOGAN, jeśli to odpowiada na twoje pytanie, następnie uprzejmie zaakceptuj odpowiedź. – iabdalkader

12

Można również podać nazwiska w wyniku polecenia find:

zip name.zip `find . -name <name> -print` 

Jest to funkcja powłoki używasz. Możesz wyszukiwać "backticks", aby określić sposób, w jaki twoja powłoka to obsługuje.

+0

działa dokładnie tak, jak tego oczekiwałem. – ferdynator

6

Twoja odpowiedź jest blisko, ale to może działać lepiej:

find -regex 'regex' -exec zip filname.zip {} + 

To będzie umieścić wszystkie pliki pasujące w jednym pliku zip o nazwie filename.zip. Nie musisz martwić się znakami specjalnymi w nazwie pliku (jak podział wiersza), które byś zrobił, gdybyś wyposażył wyniki.

+0

Dobra robota ze znakiem plus. Zawsze zapominam, że 'find' może to zrobić. – jheddings

+0

co robić? ze znakiem + – aliopi

+2

@aliopi The + oznacza zastąpienie {} wszystkimi nazwami plików zamiast wykonywania komendy raz dla każdego pliku. –

Powiązane problemy