मैं एक संग्रह की सामग्री (फ़ाइलों और फ़ोल्डरों की सूची) देखना चाहता हूं, उदाहरण के लिए ए tar.gz
फ़ाइल निकालने के बिना यह.
क्या ऐसा करने के लिए कोई तरीके हैं?
मैं एक संग्रह की सामग्री (फ़ाइलों और फ़ोल्डरों की सूची) देखना चाहता हूं, उदाहरण के लिए ए tar.gz
फ़ाइल निकालने के बिना यह.
क्या ऐसा करने के लिए कोई तरीके हैं?
टार की सामग्री को देखने के लिए टर्मिनल में नीचे दिए गए कमांड को चलाएं । इसे निकालने के बिना जीजेड फ़ाइल:
tar -tf filename.tar.gz
- टी, -- सूची
एक संग्रह की सामग्री को सूचीबद्ध करें । तर्क वैकल्पिक हैं । दिए जाने पर, वे सदस्यों के नाम सूचीबद्ध करने के लिए निर्दिष्ट करते हैं ।
- च, --फ़ाइल=संग्रह संग्रह फ़ाइल या डिवाइस संग्रह का उपयोग करें । ..
आप विम का भी उपयोग कर सकते हैं
vim filename.tar.gz
less
भी खोल सकते हैं gz
- संकुचित और असम्पीडित tar
अभिलेखागार। यह आपको एक प्यारा देता है ls -l
स्टाइल आउटपुट भी:
$ less ~/src/compiz_0.9.7.8-0ubuntu1.6.debian.tar.gzdrwxrwxr-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
, आप इसके माध्यम से स्क्रॉल कर सकते हैं, इसे खोज सकते हैं, आदि । हालांकि यह अन्य संपीड़न एल्गोरिदम (मेरे अनुभव में) के साथ बुरी तरह विफल रहता है ।
आप जेड कमांड का उपयोग कर सकते हैं: zcat
, zless
, zgrep
.
एक फाइल सामग्री का उपयोग देखने के लिए:
zcat file.gz
कुछ उपयोग करने के लिए:
zgrep test file.gz
फ़ाइलों के उपयोग के बीच अंतर की जांच करने के लिए:
zdiff file1.gz file2.gz
ये केवल कुछ उदाहरण हैं, कई और भी हैं ।
खैर, यह फाइल पर निर्भर करता है । अधिकांश (डी)संपीड़न कार्यक्रमों में एक ध्वज होता है जो एक संग्रह की सामग्री को सूचीबद्ध करता है ।
tar
/tar.gz
/tgz
/tar.xz
/tar.bz2
/tbz
फ़ाइलें
$ tar tf foo.tgz dir1/dir1/subdir1/dir1/subdir1/filedir1/subdir2/dir1/subdir2/filedir2/
zip
फ़ाइलें
$ zip -sf foo.zip Archive contains: dir1/ dir2/ dir1/subdir1/ dir1/subdir1/file dir1/subdir2/ dir1/subdir2/fileTotal 6 entries (0 bytes)
7zip
फ़ाइलें
$ 7z l foo.7z 7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18p7zip Version 9.20 (locale=en_US.utf8,Utf16=on,HugeFiles=on,4 CPUs)Listing archive: foo.7z--Path = foo.7zType = 7zSolid = -Blocks = 0Physical Size = 168Headers Size = 168 Date Time Attr Size Compressed Name------------------- ----- ------------ ------------ ------------------------2015-03-30 19:00:07 ....A 0 0 dir1/subdir1/file2015-03-30 19:00:07 ....A 0 0 dir1/subdir2/file2015-03-30 19:07:32 D.... 0 0 dir22015-03-30 19:00:07 D.... 0 0 dir1/subdir22015-03-30 19:00:07 D.... 0 0 dir1/subdir12015-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 2012Trial version Type RAR -? for helpArchive foo.rarPathname/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 bashfor 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..." ;; esacdone
उस स्क्रिप्ट को अपने में सहेजें 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 2012Trial version Type RAR -? for helpArchive foo.rarPathname/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/filedir1/filedir2/-----Archive 'foo.tar.gz'-----dir1/dir1/subdir1/dir1/subdir1/filedir1/filedir2/-----Archive 'foo.tbz'-----dir1/dir1/subdir1/dir1/subdir1/filedir1/filedir2/-----Archive 'foo.zip'-----Archive contains: dir1/ dir1/subdir1/ dir1/subdir1/file dir1/file dir2/Total 5 entries (0 bytes)
और चूंकि किसी ने उल्लेख किया है कि कम संपादक, स्वाभाविक रूप से, एमएसीएस भी ऐसा कर सकते हैं:
tar
की की -t
ध्वज आपके लिए सामग्री सूचीबद्ध करेगा । इसे अपने अन्य झंडों में जोड़ें (इसलिए -tvfz
एक के लिए tar.gz
, -tvfj
एक के लिए tar.bz2
, आदि) और आप निकालने के बिना ब्राउज़ कर सकते हैं । वहां से आप सिंगल फाइल को काफी आसानी से निकाल सकते हैं
tar -xvfz mybackup.tar.gz path/to/file
के साथ बड़ी समस्या tar
है सभी को याद अन्य झंडे. इसलिए मैं आमतौर पर भरोसा करता हूं 7z
(का p7zip-full
पैकेज) मेरे सभी संग्रह करने के लिए । मैं दावा नहीं करूंगा कि यह पूरी तरह से बेहतर है लेकिन यह लगभग हर चीज का समर्थन करता है (संपीड़न प्रकार निर्दिष्ट किए बिना) और तर्क तार्किक हैं ।
7z l archive.ext7z e archive.ext path/to/file
यह निश्चित रूप से कम सक्षम है, लेकिन आप नहीं जरूरत है इसका उपयोग करने के लिए मैन पेज।
मध्यरात्रि कमांडर भी है (mc
). यह अर्ध-ग्राफिकल टर्मिनल-आधारित फ़ाइल प्रबंधन के लिए एक ऑल-अराउंड बदमाश है और कुछ प्रकाश परीक्षण के साथ यह आपको दोनों में ब्राउज़ करने देता है .tar.gz
और .7z
अभिलेखागार। मुझे यकीन नहीं है कि यह कितने अन्य लोगों का समर्थन करता है ।
उपयोग क्यों नहीं vim
अपने संग्रह को ब्राउज़ करने और फ़ाइलों को खोलने के लिए (कम से कम पाठ जैसी फ़ाइलें):
vim archive.tar.gz
स्क्रॉल करने के लिए तीर कुंजी दबाएँ और Enter फ़ाइल खोलने के लिए ।
आधी रात कमांडर (mc
) एक अच्छा संपीड़ित फ़ाइल दर्शक भी है, हालांकि मैं इसे एमसी के बाद से थोड़ा धोखा मानता हूं है एक फ़ाइल प्रबंधक, एक पाठ-आधारित एक के बावजूद।
साथ ही, यदि आप केवल यह देखना चाहते हैं कि संपीड़ित अभिलेखागार के अंदर क्या है, तो आप प्रत्येक कंप्रेसर के लिए "दृश्य" कमांड सीख सकते हैं । tar tzvf
आपको टार फ़ाइल की सामग्री दिखाएगा, unzip -l
यह एक ज़िप फ़ाइल के लिए करेगा, और इसी तरह ।
lesspipe
के भाग के रूप में डिफ़ॉल्ट रूप से स्थापित एक शेल स्क्रिप्ट है less
पैकेज जो एक की सामग्री को सूचीबद्ध कर सकता है tar.gz
पुरालेख, साथ ही अन्य सामान्य संग्रह फ़ाइल स्वरूपों की एक श्रृंखला ।
$ lesspipe example.tar.gzdrwxrwxr-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
कमांड (ओली का जवाब देखें) एक इनपुट प्रीप्रोसेसर के रूप में यदि $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
मेरे द्वारा डाउनलोड की गई फ़ाइलें काम नहीं करेंगी क्योंकि वे फ़ाइल नाम के बावजूद वास्तव में गज़िप संपीड़न का उपयोग नहीं करते थे ।
का उपयोग करना view filename.tar.gz
भी काम करेंगे । उसी तरह से विम करता है, लेकिन लिखने की अनुमति के बिना ।
फ़ाइलों में ब्राउज़ करने के लिए विम
का उपयोग करें