Wyodrębnij określone pliki z archiwum tar za pomocą symbolu wieloznacznego

19

Próbuję utworzyć skrypt, aby wyodrębnić tylko zdjęcia JPEG z archiwum zawierającego wiele rodzajów plików.

Aby to zrobić, próbowałem użyć:

   tar -xf MyTar.tar *.jpg

ale nie udało się (* .jpg nie znaleziono) i sugeruje, żebym użył „--wildcard”. Więc próbowałem

tar -xf MyTar.tar --wildcard *.jpg

Zrobiłem to, ale potem ten sam błąd i inne ostrzeżenie mówi mi, że opcja „--wildcard” jest niejednoznaczna.

Przeglądałem strony podręcznika systemu tar, ale nie znalazłem pojęcia o problemie.

AdrieanKhisbe
źródło
Która smoła i która wersja? Wklej wynikitar --version
smci

Odpowiedzi:

33

W końcu znalazłem odpowiedź po dobrej przerwie. Opcja jest wieloznaczne s , liczba mnoga ...

Więc polecenie

tar -xf MyTar.tar --wildcards "*.jpg"

zrobiłem dokładnie to, czego potrzebowałem.

AdrieanKhisbe
źródło
3

Umieść cudzysłowy w ten "*.jpg"sposób, aby powłoka nie próbowała go rozwinąć, a zamiast tego przekaże go wprost do tar. Chcesz, aby tar oceniał symbol wieloznaczny, a nie powłokę, a cytaty to robią.

Nicole Hamilton
źródło
0

W przypadku niektórych starszych wersji tar, z pliku „man” wyodrębnia się :

Symbole zastępcze nazw plików nie mogą być używane do wyodrębniania plików z archiwum. Zamiast tego użyj polecenia w postaci:

tar xvf ... /dev/rmt/0 `tar tf ... /dev/rmt/0 | grep 'pattern' `
Ray Peck
źródło