मैं एक संग्रह की सामग्री (फ़ाइलों और फ़ोल्डरों की सूची) को देखना चाहता हूं, उदाहरण के लिए बिना किसी tar.gz
फ़ाइल को निकाले ।
क्या ऐसा करने के लिए कोई तरीके हैं?
मैं एक संग्रह की सामग्री (फ़ाइलों और फ़ोल्डरों की सूची) को देखना चाहता हूं, उदाहरण के लिए बिना किसी tar.gz
फ़ाइल को निकाले ।
क्या ऐसा करने के लिए कोई तरीके हैं?
जवाबों:
एक निकाले बिना tar.gz फ़ाइल की सामग्री को देखने के लिए टर्मिनल में नीचे कमांड चलाएँ:
tar -tf filename.tar.gz
-t, --list
एक पुरालेख की सामग्री को सूचीबद्ध करें। तर्क वैकल्पिक हैं। दिए जाने पर, वे सदस्यों के नामों को सूचीबद्ध करने के लिए निर्दिष्ट करते हैं।
tar -tvf xxx.tgz
यह फाइलों की डिटेल प्रॉपर्टीज भी दिखाएगा।
tree
एक पेड़ के दृश्य को देखने के लिए इसे पाइप करेंtar -tf filename.tar.gz | tree
unzip -l
unrar -l
आप विम का उपयोग भी कर सकते हैं
vim filename.tar.gz
ex +%p foo.tar.gz
:।
vim file.tar.gz
) के साथ खोलते हैं, तो यह कहती है "कर्सर के साथ एक फ़ाइल चुनें और 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
।
tar
के -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
यह निश्चित रूप से कम सक्षम है, लेकिन इसका उपयोग करने के लिए आपको मैन पेज की आवश्यकता नहीं है।
मिडनाइट कमांडर ( 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फ़ाइल खोलने के लिए तीर कुंजियाँ दबाएँ ।
आधी रात कमांडर ( mc
) भी हालांकि मैं इस धोखा दे के बाद से एम सी का एक सा विचार करते हैं, एक अच्छा संपीड़ित फ़ाइल दर्शक है है एक फ़ाइल प्रबंधक, यद्यपि एक पाठ आधारित एक।
इसके अलावा, यदि आप चाहते हैं कि यह देखना है कि संपीड़ित अभिलेखागार के अंदर क्या है, तो आप प्रत्येक कंप्रेसर के लिए "दृश्य" कमांड सीख सकते हैं। tar tzvf
आपको एक टार फ़ाइल की सामग्री दिखाएगा, unzip -l
इसे ज़िप फ़ाइल के लिए करेगा, और इसी तरह।
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
कमांड ( ओली का उत्तर देखें ) कहा जाता है $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 संपीड़न का उपयोग नहीं करती थीं।
यदि आप किसी संग्रह में किसी विशेष फ़ाइल की सामग्री को संग्रह के लिए निकाले या डिस्क पर लिखे बिना किसी भी तरह से देखना चाहते हैं, तो फ़ाइल के बजाय stdout लिखने के लिए -O (कैपिटल ओ) ध्वज का उपयोग करें।
tar -Oxvf gerald.tar.gz /path/to/sandra.txt | less
सुनिश्चित करें कि O f से पहले आता है या यह O को फ़ाइल नाम के रूप में पार्स करने का प्रयास करेगा।