tar -tf filename.tar
folder1/file
folder1/name
[...]
Chciałbym wyodrębnić plik i nazwę , folder2 . Czy można to zrobić jako jedno-liniowy?
Użyj -C
i --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
-C
Flag zakłada katalog jest już na miejscu, więc zawartość pliku tar może być rozszerzona do niego. stąd mkdir FOLDER
.
--strip-components
Flaga jest używany, gdy plik tar naturalnie rozwinąć się w folderze, powiedzmy, jak github gdzie przykłady do repo-name-master
folderu. Oczywiście nie potrzebujesz generowanego tutaj folderu pierwszego poziomu, więc --strip-components
ustaw go tak, aby 1
automatycznie usuwał ten pierwszy folder. Im większa liczba, tym głębsze zagnieżdżone foldery są usuwane.
man tar
. Nie zauważyłem--strip-components
. fajnyMożesz także użyć tej
--transform
opcji, 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ę:
źródło