![批量 7zip 将所有文件单独放在一个目录中(Centos 7.6)](https://linux22.com/image/150394/%E6%89%B9%E9%87%8F%207zip%20%E5%B0%86%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6%E5%8D%95%E7%8B%AC%E6%94%BE%E5%9C%A8%E4%B8%80%E4%B8%AA%E7%9B%AE%E5%BD%95%E4%B8%AD%EF%BC%88Centos%207.6%EF%BC%89.png)
我试图在 Linux Centos 7.6 中将目录中的所有文件分别压缩到它们自己的存档中(针对每个文件)。查了一段时间但没有找到方法。
答案1
假设您想对某个顶级目录中及其下方的所有常规文件递归地执行此操作$topdir
:
find "$topdir" -type f -exec 7za a {} {} \;
对于包含以下内容的单个目录仅有的您想要压缩的文件,您将使用
for pathname in "$topdir"/*; do
7za a "$pathname" "$pathname"
done
这里的区别是隐藏文件不会被压缩。如果您dotglob
在bash
with中启用shell 选项shopt -s dotglob
,则循环将包含隐藏名称。
使用find
(这将减少打字),您可以使用以下命令在单个目录中处理文件
find "$topdir" -maxdepth 1 -type f -exec 7za a {} {} \;