通常,我取消归档内容,$ mkdir newFolder; $ mv *.zip newFolder; $ cd newFolder; $unzip *.zip但有时我会变得懒惰,只是在任意文件夹中进行操作,$ unzip *.zip因此不时会弄乱其他内容。我将在这里列出一些方法——一些存档版本肯定有蹩脚的标志,而另一些则更加简陋,我对后者更感兴趣。
有些方法可以取消存档,还有其他方法吗?
$ find . -anewer fileThatExistedBeforeUnarchieving -ok rm '{}' \;缺点是它列出了*.zip目录,因此您需要使用 slow -ok、 slow 与许多*.zip匹配项,并且由于某种原因,它似乎并不匹配提取的所有内容。
如果提取的文件量少,一个一个,慢,麻烦,容易出错。
当我想确定存档的内容是否实际上是一个文件夹时,我有时会使用$ unzip -l *.bsd,至少在 obsd 的解压缩版本中工作。
如果您指的是某些存档工具,请在适当的时候说明它们。保持简单——我更感兴趣的是你如何做到这一点,而不是一个单一的工具。
可能的重复:
如何解压、解压 -xvf — 在凌乱的文件夹中解压?
这是一个非常烦人的现象。有时,我下载档案 ( tar.gz, tar.bz2, zip, rar, etc) 并tar xf [file]在文件目录中运行(或类似)。在极少数情况下,所有文件都在当前工作目录而不是子目录中提取。这可能导致无法使用模式匹配解决方案简单地删除数百个文件和数百个模式。
有没有办法获取存档的文件内容,然后删除当前工作目录中该列表中的所有文件?
我在 Windows 机器上创建了一个 .zip(在我的控制范围之外)。zip 文件包含解压缩时需要保留的路径。
但是,当我解压缩时,所有文件都像:
unzip_dir/\window\path\separator\myfile.ext
我已经尝试过,有和没有-j选择。我的问题是,我需要在这条道路的信息\window\path\separator\。我需要在解压缩时创建该文件结构。
我可以在脚本中轻松地mv将文件和翻转\到/,但随后出现目标路径目录不存在的错误。我现在的解决方法是mkdir -p路径(转换\为 后/),然后cp是这些路径的文件。
但是有很多文件,mkdir -p每个文件的这些冗余语句确实会减慢速度。
有没有更优雅的方法将带有 Windows 路径的 zip 文件转换为 Linux 路径?
我想查看已压缩为单个 zip 文件的每个文件的绝对大小(以字节为单位)。阅读了 zip 手册页后,我不确定该实用程序是否可以做到。这是在 Mac OS X 上。
就像是:
$zip list myarchive.zip
file1.jpg 100 bytes compressed 3000 bytes uncompressed
file2.jpg 130 bytes compressed 3440 bytes uncompressed
Run Code Online (Sandbox Code Playgroud) 充其量我想要这样的电话:
$searchtool /path/to/search/ -contained-file-name "*vacation*jpg"
Run Code Online (Sandbox Code Playgroud)
...这样这个工具
*vacation*jpg)我知道如何使用查找工具、tar、unzip 等。我可以将这些与 shell 脚本结合起来,但我正在寻找一个简单的解决方案,它可能是单行 shell 或专用工具(欢迎提供 GUI 工具的提示,但我的解决方案必须基于命令行)。
我想知道是否有办法将压缩文件作为目录集成到文件系统中(我认为它与挂载有点不同)?
例如,您可以将一个下载compressed-file.tar.gz到他的本地硬盘驱动器,然后cd compressed-file.tar.gz从压缩文件夹中执行并运行脚本,或者执行cp some-file ..以提取其中一个文件。
我知道Btrfs支持压缩,但我不想更改我拥有的文件系统 (ext3) 来支持此功能。
我有以下文件夹结构
folder
|
|--foo.txt
|
|--sub_folder
|
|--bar.txt
Run Code Online (Sandbox Code Playgroud)
我想压缩文件夹的内容(文件和子文件夹)而不在 zip 中包含根文件夹。
我试过命令
zip -r package.zip folder
但这包括根文件夹。还尝试了以下形式
zip -j -r package.zip folder
但这将使所有目录结构变平并仅包含文件。如何保留内部目录结构但忽略父文件夹?
我最近发现了一个漏洞,我(或假设任何人)可以在其中重新加密我加密的 zip 文件,而无需知道密码:
#zip --encrypt encrypted.zip -r dir1/
以上将提示用户输入新密码。是否有我遗漏的东西,或者这是一个已知问题?
通常,要压缩目录,我可以执行以下操作:
zip -r archive.zip directory/
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试archive.zip像这样删除扩展名:
zip -r archive directory/
Run Code Online (Sandbox Code Playgroud)
它隐式地将.zip扩展附加到输出。有没有办法在不创建 a.zip然后重命名它的情况下做到这一点?
我zip在 Ubuntu 18.04 上使用这个版本:
Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license.
This is Zip 3.0 (July 5th 2008), by Info-ZIP.
Run Code Online (Sandbox Code Playgroud) 在构建提取 ZIP 文件的应用程序时,我注意到有时 ZIP 文件明确包含目录条目,有时则不包含。例如给出以下结构
\nfolder1/\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 file1\nRun Code Online (Sandbox Code Playgroud)\n我发现通过以下方式列出内容时给出以下不同输出的文件unzip -lv file.zip:
Length Method Size Cmpr Date Time CRC-32 Name\n-------- ------ ------- ---- ---------- ----- -------- ----\n 5 Stored 5 0% 2023-04-20 13:54 3bb935c6 folder1/file1\n-------- ------- --- -------\n 5 5 0% 1 file\nRun Code Online (Sandbox Code Playgroud)\n Length Method Size Cmpr Date Time CRC-32 Name\n-------- ------ ------- ---- ---------- ----- -------- ----\n 0 Stored 0 0% 2023-04-20 13:54 00000000 folder1/\n 5 Stored 5 0% 2023-04-20 13:54 3bb935c6 folder1/file1\n-------- ------- --- …Run Code Online (Sandbox Code Playgroud) zip ×10
tar ×3
archive ×2
filenames ×2
files ×2
7z ×1
bash ×1
command-line ×1
compression ×1
directory ×1
encryption ×1
filesystems ×1
find ×1
mount ×1
rar ×1
rm ×1
size ×1