我找不到 .tar 文件解压到的默认目录。操作系统 - Ubuntu 16 4。请不要回答:与 tar 文件相同的文件夹,因为它不在那里(我发现的每个教程或问题都使用该答案)。请帮助 ?!
答案1
当图像被打包时,它的目录结构可以被保留。要查看 a 的目录结构tar
而不取消tar
它:
tar -ztvf my-data.tar.gz
-t
( 的缩写)--list
:
列出存档的内容。参数是可选的。当给出时,它们指定要列出的成员的姓名。
如果它与提取文件不在同一目录中,tar
那么它将位于该目录的子目录中,除非指定了-C
或:--directory
-C, --directory=DIR Change to DIR before performing any operations. This option is order-sensitive, i.e. it affects all options that follow.
尝试find . -name '*expected file*'
在当前目录下搜索。
答案2
它是存档中编码的目录,除非-C
在解压时使用 例如 进行更改。您始终可以使用以下命令获取存档中的文件路径列表
tar -t -f archive.tar
存档中存储的路径是几乎总是相对路径(除非-P
在创建存档时使用),这意味着存档的内容将在当前目录中解压为文件层次结构(除非使用 进行更改-C
)。
答案3
该tar
命令提取其文件当前工作目录。当您tar
从 shell 运行时,这是 shell 的当前工作目录,由命令设置cd
、由命令显示pwd
、有时在提示符中显示的目录。可以使用选项更改提取目录-C
。
许多 tar 文件将所有文件放在一个顶级目录(相对于提取目录)中,通常具有类似于 tar 文件的名称。在这种情况下,所有提取的文件都位于该目录下。但这不是义务,有许多 tar 文件包含多个顶级目录和顶级文件。另一方面,tar
在 Ubuntu 和大多数其他系统上,不会提取提取目录之外的任何文件。
提取目录根本不依赖于 tar 文件的位置。 (这是针对tar
命令的,通常是大多数命令行存档操作程序。GUI 程序的行为可能有所不同。)如果传递给的 tar 文件名参数tar
不包含任何目录部分,则提取目录是 tar 文件的位置,但在一般来说它可以在任何地方。
如果您不记得运行命令时的当前目录是什么tar
,请检查您的 shell 历史记录(在 bash 中,按Ctrl+R然后键入tar
;再次按Ctrl+R重复搜索)。如果找到存档的相对路径(例如tar xf subdir/archive.tar
),您也许能够找出当前目录是什么(在本示例中,它是包含存档的目录的父目录)。当然,这并不总是有帮助,例如,如果路径是绝对路径。
如果找不到文件,您可以尝试使用以下命令查找在正确的时间范围内创建或修改的文件(更准确地说,是对文件或其属性进行的任何更改)find
及其-ctime
或-cmin
选项,例如
find ~ -cmin +30 -cmin -61
在您的主目录下查找 30 到 60 分钟前更改的文件。您可以使用-cmin
和来将更改时间与文件的更改时间进行比较。您可以在命令末尾添加以缩小范围到存档中包含的特定文件名(没有任何目录部分)。-ctime
-cnewer somefile
somefile
-name foo
find
如果您tar
前一天或之前跑步定位数据库可能会让您知道您的文件在哪里。例如,如果存档包含一个文件,some/directory/myfile.txt
那么locate some/directory/myfile.txt
会告诉您在哪里可以找到这样的文件。