我有一个 tar.gz,里面有 pdf,我想在不提取的情况下打开一个特定的 pdf,是否可以通过终端上的某些命令来实现(我知道我们可以使用 GUI 来实现,但我想使用终端)
答案1
要列出存档中的(未打开的)文件而不进行提取,请运行以下命令:
tar -tf myarchive.tar.gz
要提取并打开,直接运行以下命令:
tar -xzf myarchive.tar.gz && evince *.pdf
快速处理:(提取/tmp/mypdf
然后移除)
mkdir /tmp/mypdf && tar -xzf myarchive.tar.gz -C /tmp/mypdf && cd /tmp/mypdf && evince *.pdf && cd .. && rm -r mypdf
myarchive.tar.gz
您的示例档案名称在哪里。
用于提取特定文件,
mkdir /tmp/mypdf && tar -xzf myarchive.tar.gz -C /tmp/mypdf "<file.pdf>" && cd /tmp/mypdf && evince *.pdf && cd .. && rm -r mypdf
其中"<file.pdf>"
是您要提取并打开的特定文件的文件名。
希望对您有帮助。对于高级功能脚本命令来说,通过运行特定目的的脚本很有用。
答案2
要在单个命令行中执行此操作,您需要一个可以处理来自管道的输入的 pdf 查看器。我知道的唯一具有此选项的查看器是 ImageMagicks 的展示。它不是很舒服(较大的文件可能需要一段时间),但可能对你的目的来说很方便。
tar xOfz <archive> <path/to/file/in/archive> | display
(较大的 pdf 文件可能需要一段时间。)
答案3
无法在未解压的情况下打开。GUI 应用程序在打开文件之前会临时解压它们...
如果您有一个包含 PDF 文件的 tar.gz 文件,并且希望使用命令行提取一个或多个文件,则可以使用:
tar -xzf MyArchive.tar.gz MyPDF5.pdf
tar -xzf MyArchive.tar.gz MyPDF6.pdf MyPDF3.pdf
tar -xzf MyArchive.tar.gz "My PDF 128.pdf"
您还可以从档案中的文件夹提取一个文件(目录结构将被保留):
tar -xzf MyArchive.tar.gz "My Archive Folder/My Other PDF.pdf"
如果您不想保留目录结构,可以使用 --strip-components 后跟子文件夹的级别:
tar -xzf MyArchive.tar.gz "My Archive Folder/My Other PDF.pdf" --strip-components 1
tar -xzf MyArchive.tar.gz "e-Books/Favorites/Ubuntu Linux/My PDF about Ubuntu.pdf" --strip-components 3
请注意,如果您的存档文件名包含空格,也必须用双引号引起来。
在上面的例子中,我假设您位于包含存档文件的文件夹中,并且您希望在那里提取。
在使用 tar 命令之前,您应该使用“cd”命令转到要提取文件的文件夹。如果存档位于另一个文件夹中,只需输入其绝对完整路径 [“/home/myusername/Desktop/My Folder/My Other Archive.tar.gz”](在某些情况下使用相对路径也可能有用)。
PS:如果是简单的文本文件(txt),命令末尾的“-O”参数可能就是你要找的,但因为是PDF文件,所以没多大用处……根据答辩,ImageMagick 的“display”能够按照您希望的方式通过管道处理 PDF 输出。
tar -xzf MyArchive.tar.gz "My PDF 128.pdf" -O | display