Mam plik zawierający listę plików, które chcę zarchiwizować za pomocą tar. Nazwijmy tomylist.txt
Zawiera:
file1.txt
file2.txt
...
file10.txt
Czy istnieje sposób, w jaki mogę wydać polecenie TAR, które przyjmuje mylist.txt
jako dane wejściowe? Coś jak
tar -cvf allfiles.tar -[someoption?] mylist.txt
Żeby było podobnie jakbym wydał to polecenie:
tar -cvf allfiles.tar file1.txt file2.txt file10.txt
-X
wykluczenia przetrwała ze starego polecenia tar systemu Unix, ale najwyraźniej -I (dołącz) nie!man
stron zEXAMPLES
sekcją, mimo że jest to sekcja standardowa . Zobacz < unix.stackexchange.com/questions/306189/… >.Odpowiedzi:
Tak:
źródło
-L mylist.txt
w systemie AIXZakładając GNU tar (jak to jest Linux), opcja
-T
lub--files-from
jest tym, czego chcesz.źródło
Możesz również potokować nazwy plików, które mogą być przydatne:
źródło
Niektóre wersje tar, na przykład domyślne wersje na HP-UX (testowałem 11.11 i 11.31), nie zawierają opcji wiersza poleceń do określenia listy plików, więc dobrym obejściem jest zrobienie tego:
źródło
cat
), po prostu$(<mylist.txt)
.mylist.txt
jest dużytar -T <(<mylist.txt)
. zbędne, jak ta odpowiedź.W systemie Solaris można użyć opcji -I, aby odczytać nazwy plików, które normalnie podaje się w wierszu poleceń z pliku. W przeciwieństwie do wiersza poleceń, może to tworzyć archiwa tar z setkami tysięcy plików (właśnie to zrobiłem).
Więc przykład brzmiałby
źródło
U mnie w systemie AIX działało w następujący sposób:
źródło