linux - 为目录中的每个子目录创建一个 RAR 存档 - Centos/Ubuntu

标签 linux shell ubuntu rar

如果在 Ubuntu 或 Centos 上使用 RAR,这是压缩单个文件夹(里面有子文件夹)的命令,或者是压缩单个存档目录中所有文件夹的命令:

rar a -m0 -r name.rar

在哪里

-m0 是压缩级别
-r递归模式

但是如果我想压缩每个文件夹呢?使用哪些命令?

我想在压缩每个文件夹时保留目录树。

我也试过这个命令,

for folder in */; do echo rar a -m0 -r "${folder%/}.rar" "$folder"; done

但它没有给我任何操作,但在终端中显示为:

user@hppro ~
$ ls -l
total 3
drwxr-xr-x+ 1 user None  0 Aug  2 03:17 abcd_dir
drwxr-xr-x+ 1 user None  0 Aug  2 03:18 defgh_dir
-rwx------  1 user None 86 Dec 24  2020 blahfile

user@hppro ~
$ for folder in */; do echo rar a -m0 -r "${folder%/}.rar" "$folder"; done
rar a -m0 -r abcd_dir.rar abcd_dir/
rar a -m0 -r defgh_dir.rar defgh_dir/

user@hppro ~
$

参数替换 ${folder%/> 用于删除文件夹名称末尾的“/”。但是这段代码不起作用。

来源:http://www.linuxquestions.org/questions/linux-newbie-8/compress-folder-in-rar-652612/

P.S:我使用的是 Centos 或 Ubuntu 而不是 Windows。

最佳答案

您可能只需要删除 echo:

for folder in */; do rar a -m0 -r "${folder%/}.rar" "$folder"; done

关于linux - 为目录中的每个子目录创建一个 RAR 存档 - Centos/Ubuntu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25299584/

相关文章:

linux - 在 Linux 中编译/运行汇编程序?

c - linux和c中两个不同独立程序之间的共享内存页

bash - 从 Bash 中的 $PATH 变量中删除路径的最优雅方法是什么?

linux - ubuntu - 禁用从特定进程/rsyslog 进程记录到 syslog

ubuntu - 如何构建运行可执行 jar 的 snap 包?

linux - 如果 block 设备已经格式化,则退出 mkfs 命令

c - 编写自定义 PCIe 热插拔 Linux 2.6.x 驱动程序

shell - ksh 中管道命令行的退出状态

regex - 如何在 bash 中匹配零个或多个模式实例?

bash - 在 block bash 脚本中写入多行