tar -tf filename.tar
folder1/file
folder1/name
[...]
Я хотів би витягнути файл та ім'я до папки2 . Чи можна це зробити як однолінійний?
tar -tf filename.tar
folder1/file
folder1/name
[...]
Я хотів би витягнути файл та ім'я до папки2 . Чи можна це зробити як однолінійний?
Відповіді:
Використовуйте -C
та --strip-components
(Див. 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
Прапор приймає каталог вже на місці , так що вміст файлу дьогтю може бути розкладена в нього. звідси mkdir FOLDER
.
--strip-components
Прапор використовується , коли дьоготь файл, природно , розширити себе в папку, скажімо, як GitHub , де це приклади repo-name-master
папки. Звичайно, вам не знадобиться створена тут папка першого рівня, створена так --strip-components
, щоб 1
автоматично видалити цю першу папку для вас. Чим більше число встановлюється, тим глибші вкладені папки видаляються.
Ви також можете використовувати цю --transform
опцію для трохи більшої гнучкості. Він приймає будь-які операції по заміні sed (-ів).
Наприклад, так я витягую тарбол Linux у новий каталог, щоб я міг застосувати виправлення:
tar -xjf linux-2.6.38.tar.bz2 --transform 's/linux-2.6.38/linux-2.6.38.1/'
man tar
. Не помітив--strip-components
. приємний