ฉันต้องการจะดูเนื้อหา (รายชื่อของไฟล์และโฟลเดอร์) ของเก็บตัวอย่างเช่น tar.gz
ไฟล์โดยไม่ต้องแยกมัน
มีวิธีใดบ้างในการทำเช่นนั้น?
ฉันต้องการจะดูเนื้อหา (รายชื่อของไฟล์และโฟลเดอร์) ของเก็บตัวอย่างเช่น tar.gz
ไฟล์โดยไม่ต้องแยกมัน
มีวิธีใดบ้างในการทำเช่นนั้น?
คำตอบ:
เรียกใช้คำสั่งด้านล่างในเทอร์มินัลเพื่อดูเนื้อหาของไฟล์ tar.gz โดยไม่แตกไฟล์:
tar -tf filename.tar.gz
-t, - แสดง
รายการเนื้อหาของไฟล์เก็บถาวร อาร์กิวเมนต์เป็นทางเลือก เมื่อได้รับพวกเขาระบุชื่อของสมาชิกที่จะแสดง
tar -tvf xxx.tgz
สิ่งนี้จะแสดงคุณสมบัติโดยละเอียดของไฟล์
tree
เพื่อดูมุมมองต้นไม้tar -tf filename.tar.gz | tree
unzip -l
/unrar -l
คุณยังสามารถใช้เป็นกลุ่ม
vim filename.tar.gz
ex +%p foo.tar.gz
Ex:
vim file.tar.gz
) จะมีข้อความระบุว่า "เลือกไฟล์ที่มีเคอร์เซอร์แล้วกด ENTER" คุณทำเช่นนั้นเลื่อนเคอร์เซอร์ไปที่ไฟล์แล้วกด ENTER
less
ยังสามารถเปิดคลังข้อมูลที่gz
บีบอัดและไม่บีบอัดtar
ได้ มันทำให้คุณมีls -l
สไตล์ที่น่ารักเช่นกัน:
$ less ~/src/compiz_0.9.7.8-0ubuntu1.6.debian.tar.gz
drwxrwxr-x 0/0 0 2012-09-21 11:41 debian/
drwxrwxr-x 0/0 0 2012-08-09 13:32 debian/source/
-rw-rw-r-- 0/0 12 2012-08-09 13:32 debian/source/format
-rw-rw-r-- 0/0 25 2012-08-09 13:32 debian/libdecoration0-dev.docs
-rw-rw-r-- 0/0 25 2012-08-09 13:32 debian/compiz-dev.docs
-rw-rw-r-- 0/0 347 2012-08-09 13:32 debian/compiz-core.install
-rw-rw-r-- 0/0 125 2012-08-09 13:32 debian/libdecoration0-dev.install
...
และเนื่องจากless
คุณสามารถเลื่อนดูค้นหาและอื่น ๆ อย่างไรก็ตามมันล้มเหลวอย่างน่าสมเพชด้วยอัลกอริธึมการบีบอัดอื่น ๆ (จากประสบการณ์ของฉัน)
alias
ตัวเลือกพิเศษสำหรับless
สิ่งที่คุณไม่ได้แสดงที่นี่? ฉันเพิ่งลองดู แต่ก็ไม่ได้ผล less
ฉันไม่ได้มีการติดตั้งนามแฝงสำหรับ
zcat
คุณสามารถใช้คำสั่งซี: zless
, zgrep
,
วิธีดูเนื้อหาไฟล์ใช้:
zcat file.gz
วิธี grep ใช้:
zgrep test file.gz
วิธีตรวจสอบความแตกต่างระหว่างไฟล์ใช้:
zdiff file1.gz file2.gz
นี่เป็นเพียงตัวอย่างเล็ก ๆ น้อย ๆ มีอีกมากมาย
tar
's -t
ธงจะแสดงรายการเนื้อหาสำหรับคุณ เพิ่มลงในแฟล็กอื่นของคุณ (ดังนั้น-tvfz
สำหรับ a tar.gz
, -tvfj
a tar.bz2
, ฯลฯ ) และคุณสามารถเรียกดูได้โดยไม่ต้องแตกไฟล์ จากตรงนั้นคุณสามารถแตกไฟล์เดียวได้อย่างง่ายดาย
tar -xvfz mybackup.tar.gz path/to/file
ปัญหาใหญ่ที่มีtar
อยู่ในความทรงจำทั้งหมดธงอื่น ๆ ดังนั้นฉันมักจะพึ่งพา7z
(ของp7zip-full
แพคเกจ) เพื่อทำจดหมายเหตุทั้งหมดของฉัน ฉันจะไม่อ้างว่ามันดีกว่าทั้งหมด แต่รองรับเกือบทุกอย่าง (โดยไม่ต้องระบุประเภทการบีบอัด) และอาร์กิวเมนต์เป็นตรรกะ
7z l archive.ext
7z e archive.ext path/to/file
แน่นอนว่ามันมีความสามารถน้อยกว่า แต่คุณไม่จำเป็นต้องใช้ man page เพื่อใช้งาน
นอกจากนี้ยังมี Midnight Commander ( mc
) นี่เป็นสิ่งที่รอบด้านสำหรับการจัดการไฟล์เทอร์มินัลแบบเสมือนกราฟิกและด้วยการทดสอบแสงบางอย่างเพียงแค่ให้คุณเรียกดูทั้งสอง.tar.gz
และ.7z
เก็บถาวร ฉันไม่แน่ใจว่ารองรับกี่คน
นั่นขึ้นอยู่กับไฟล์ โปรแกรมบีบอัดส่วนใหญ่มีการตั้งค่าสถานะซึ่งแสดงรายการเนื้อหาของไฟล์เก็บถาวร
tar
/ tar.gz
/ tgz
/ tar.xz
/ tar.bz2
/ tbz
ไฟล์
$ tar tf foo.tgz
dir1/
dir1/subdir1/
dir1/subdir1/file
dir1/subdir2/
dir1/subdir2/file
dir2/
zip
ไฟล์
$ zip -sf foo.zip
Archive contains:
dir1/
dir2/
dir1/subdir1/
dir1/subdir1/file
dir1/subdir2/
dir1/subdir2/file
Total 6 entries (0 bytes)
7zip
ไฟล์
$ 7z l foo.7z
7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
p7zip Version 9.20 (locale=en_US.utf8,Utf16=on,HugeFiles=on,4 CPUs)
Listing archive: foo.7z
--
Path = foo.7z
Type = 7z
Solid = -
Blocks = 0
Physical Size = 168
Headers Size = 168
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2015-03-30 19:00:07 ....A 0 0 dir1/subdir1/file
2015-03-30 19:00:07 ....A 0 0 dir1/subdir2/file
2015-03-30 19:07:32 D.... 0 0 dir2
2015-03-30 19:00:07 D.... 0 0 dir1/subdir2
2015-03-30 19:00:07 D.... 0 0 dir1/subdir1
2015-03-30 19:00:06 D.... 0 0 dir1
------------------- ----- ------------ ------------ ------------------------
0 0 2 files, 4 folders
rar
ไฟล์
$ rar v foo.rar
RAR 4.20 Copyright (c) 1993-2012 Alexander Roshal 9 Jun 2012
Trial version Type RAR -? for help
Archive foo.rar
Pathname/Comment
Size Packed Ratio Date Time Attr CRC Meth Ver
-------------------------------------------------------------------------------
dir1/subdir1/file
0 8 0% 30-03-15 19:00 -rw-r--r-- 00000000 m3b 2.9
dir1/subdir2/file
0 8 0% 30-03-15 19:00 -rw-r--r-- 00000000 m3b 2.9
dir1/subdir1
0 0 0% 30-03-15 19:00 drwxr-xr-x 00000000 m0 2.0
dir1/subdir2
0 0 0% 30-03-15 19:00 drwxr-xr-x 00000000 m0 2.0
dir1
0 0 0% 30-03-15 19:00 drwxr-xr-x 00000000 m0 2.0
dir2
0 0 0% 30-03-15 19:07 drwxr-xr-x 00000000 m0 2.0
-------------------------------------------------------------------------------
6 0 16 0%
นั่นคือรูปแบบการเก็บถาวรที่เป็นที่นิยมที่สุด เมื่อคำนึงถึงสิ่งนี้คุณสามารถเขียนสคริปต์เล็กน้อยที่ใช้คำสั่งที่เหมาะสมโดยขึ้นอยู่กับนามสกุลของไฟล์ที่คุณให้:
#!/usr/bin/env bash
for file in "$@"
do
printf "\n-----\nArchive '%s'\n-----\n" "$file"
## Get the file's extension
ext=${file##*.}
## Special case for compressed tar files. They sometimes
## have extensions like tar.bz2 or tar.gz etc.
[[ "$(basename "$file" ."$ext")" =~ \.tar$ ]] && ext="tgz"
case $ext in
7z)
type 7z >/dev/null 2>&1 && 7z l "$file" ||
echo "ERROR: no 7z program installed"
;;
tar|tbz|tgz)
type tar >/dev/null 2>&1 && tar tf "$file"||
echo "ERROR: no tar program installed"
;;
rar)
type rar >/dev/null 2>&1 && rar v "$file"||
echo "ERROR: no rar program installed"
;;
zip)
type zip >/dev/null 2>&1 && zip -sf "$file"||
echo "ERROR: no zip program installed"
;;
*)
echo "Unknown extension: '$ext', skipping..."
;;
esac
done
บันทึกสคริปต์นั้นลงในของคุณPATH
และทำให้สามารถเรียกใช้งานได้ จากนั้นคุณสามารถแสดงรายการเนื้อหาของไฟล์เก็บถาวรใด ๆ :
$ list_archive.sh foo.rar foo.tar.bz foo.tar.gz foo.tbz foo.zip
-----
Archive 'foo.rar'
-----
RAR 4.20 Copyright (c) 1993-2012 Alexander Roshal 9 Jun 2012
Trial version Type RAR -? for help
Archive foo.rar
Pathname/Comment
Size Packed Ratio Date Time Attr CRC Meth Ver
-------------------------------------------------------------------------------
dir1/subdir1/file
0 8 0% 30-03-15 19:00 -rw-r--r-- 00000000 m3b 2.9
dir1/file
0 8 0% 30-03-15 19:29 -rw-r--r-- 00000000 m3b 2.9
dir1/subdir1
0 0 0% 30-03-15 19:00 drwxr-xr-x 00000000 m0 2.0
dir1
0 0 0% 30-03-15 19:29 drwxr-xr-x 00000000 m0 2.0
dir2
0 0 0% 30-03-15 19:07 drwxr-xr-x 00000000 m0 2.0
-------------------------------------------------------------------------------
5 0 16 0%
-----
Archive 'foo.tar.bz'
-----
dir1/
dir1/subdir1/
dir1/subdir1/file
dir1/file
dir2/
-----
Archive 'foo.tar.gz'
-----
dir1/
dir1/subdir1/
dir1/subdir1/file
dir1/file
dir2/
-----
Archive 'foo.tbz'
-----
dir1/
dir1/subdir1/
dir1/subdir1/file
dir1/file
dir2/
-----
Archive 'foo.zip'
-----
Archive contains:
dir1/
dir1/subdir1/
dir1/subdir1/file
dir1/file
dir2/
Total 5 entries (0 bytes)
และเนื่องจากมีคนพูดถึงตัวแก้ไขน้อยกว่าโดยธรรมชาติแล้ว emacs ก็สามารถทำได้เช่นกัน:
ทำไมไม่ใช้vim
เพื่อเรียกดูไฟล์เก็บถาวรและไฟล์เปิดของคุณ (อย่างน้อยไฟล์ที่มีลักษณะคล้ายข้อความ):
vim archive.tar.gz
กดปุ่มลูกศรเพื่อเลื่อนและEnterเพื่อเปิดไฟล์
Midnight Commander ( mc
) ยังมีโปรแกรมดูไฟล์บีบอัดที่ดีแม้ว่าฉันคิดว่านี่เป็นการโกงเล็กน้อยเนื่องจาก mc เป็นตัวจัดการไฟล์แม้ว่าจะเป็นข้อความก็ตาม
นอกจากนี้หากสิ่งที่คุณต้องการคือการดูว่ามีอะไรอยู่ในคลังเก็บบีบอัดคุณสามารถเรียนรู้คำสั่ง "ดู" สำหรับแต่ละคอมเพรสเซอร์ tar tzvf
จะแสดงเนื้อหาของไฟล์ tar unzip -l
จะแสดงเป็นไฟล์ zip และอื่น ๆ
view filename.tar.gz
จะใช้
งานได้ มากในวิธีเดียวกันเป็นกลุ่ม แต่ไม่มีสิทธิ์เขียน
lesspipe
เป็นเชลล์สคริปต์ที่ติดตั้งตามค่าเริ่มต้นซึ่งเป็นส่วนหนึ่งของless
แพ็คเกจที่สามารถแสดงรายการเนื้อหาของtar.gz
ไฟล์เก็บถาวรรวมถึงช่วงของรูปแบบไฟล์เก็บถาวรทั่วไปอื่น ๆ
$ lesspipe example.tar.gz
drwxrwxr-x ubuntu/ubuntu 0 2018-11-16 05:32 example/
-rw-rw-r-- ubuntu/ubuntu 7 2018-11-16 05:32 example/ask.txt
-rw-rw-r-- ubuntu/ubuntu 7 2018-11-16 05:32 example/ubuntu.txt
มันถูกเรียกโดยless
คำสั่ง ( ดูคำตอบของ Oli ) เป็นตัวประมวลผลล่วงหน้าอินพุตหาก$LESSOPEN
ตัวแปรสภาพแวดล้อมถูกตั้งค่าอย่างเหมาะสม
หากรู้สึกถึงการผจญภัยลองจุดสูงสุดvi /usr/bin/lesspipe
เพื่อดูว่าคำสั่งนั้นใช้อะไร สำหรับไฟล์ที่ตรงกับtar.gz
ส่วนขยายเราจะเห็นว่ามันใช้tar tzvf
ภายใต้ประทุนพร้อมกับ--force-local
ตัวเลือกในการปิดการใช้งานคุณลักษณะที่ไม่ชัดเจนของtar
สิ่งนั้นจะทำให้ลำไส้ใหญ่สับสนในชื่อไฟล์ด้วยคำสั่งเพื่อใช้เทปไดร์ฟระยะไกล:
*.tar.gz|*.tgz|*.tar.z|*.tar.dz)
tar tzvf "$1" --force-local
โปรดทราบว่าเนื่องจากส่วนใหญ่ได้รับการออกแบบมาเป็นตัวประมวลผลล่วงหน้าสำหรับless
มันจะไม่ส่งออกอะไรถ้ามันไม่รู้จักชนิดของไฟล์ ฉันสังเกตว่า.tar.gz
ไฟล์บางไฟล์ที่ฉันดาวน์โหลดไม่ทำงานเพราะพวกเขาไม่ได้ใช้การบีบอัด gzip แม้จะเป็นชื่อไฟล์ก็ตาม
หากคุณต้องการดูเนื้อหาของไฟล์เฉพาะภายในไฟล์เก็บถาวรโดยไม่แตกไฟล์เก็บถาวรหรือเขียนลงดิสก์ไม่ว่าด้วยวิธีใดให้ใช้แฟล็ก -O (capital o) เพื่อเขียนไปยัง stdout แทนไฟล์
tar -Oxvf gerald.tar.gz /path/to/sandra.txt | less
ตรวจสอบให้แน่ใจ O มาก่อน f หรือจะพยายามแยก O เป็นชื่อไฟล์