tar -tf filename.tar
folder1/file
folder1/name
[...]
Chciałbym wyodrębnić plik i nazwę , folder2 . Czy można to zrobić jako jedno-liniowy?
tar -tf filename.tar
folder1/file
folder1/name
[...]
Chciałbym wyodrębnić plik i nazwę , folder2 . Czy można to zrobić jako jedno-liniowy?
Odpowiedzi:
Użyj -Ci --strip-components(Zobacz man tar).
mkdir FOLDER
# for remote tar file
curl -L ’remote_tar_file' | tar -xz - -C FOLDER --strip-components=1
# for local tar file
tar -xzf FILENAME -C FOLDER --strip-components=1
-CFlag zakłada katalog jest już na miejscu, więc zawartość pliku tar może być rozszerzona do niego. stąd mkdir FOLDER.
--strip-componentsFlaga jest używany, gdy plik tar naturalnie rozwinąć się w folderze, powiedzmy, jak github gdzie przykłady do repo-name-masterfolderu. Oczywiście nie potrzebujesz generowanego tutaj folderu pierwszego poziomu, więc --strip-componentsustaw go tak, aby 1automatycznie usuwał ten pierwszy folder. Im większa liczba, tym głębsze zagnieżdżone foldery są usuwane.
Możesz także użyć tej --transformopcji, aby uzyskać nieco większą elastyczność. Akceptuje wszelkie operacje zastępowania sed.
Na przykład w ten sposób rozpakowuję archiwum linuksowe do nowego katalogu, aby móc zastosować łatkę:
tar -xjf linux-2.6.38.tar.bz2 --transform 's/linux-2.6.38/linux-2.6.38.1/'
man tar. Nie zauważyłem--strip-components. fajny