为 2000 多个具有增量名称的文件夹创建循环,以压缩到具有相同增量名称的存档中

为 2000 多个具有增量名称的文件夹创建循环,以压缩到具有相同增量名称的存档中

我是一个 bash 和 SE 初学者,需要一些帮助。我在 Debian 服务器上有 2000 多个文件夹(它们的名称是 1000 的增量),我需要将这些文件夹压缩到单独的仅存储存档,并在文件夹中使用相应的增量名称 1 从源升级层次结构。然后我需要在创建每个存档后删除源文件文件夹。

因此,下面的代码可以满足我的需要,但我当前的想法是重复同一行 2000 次以上。我想知道是否有更好的方法通过使用循环将这个过程自动化为几行,我猜是一个子文件夹变量?

请提供任何帮助。非常感谢!

#!/bin/bash

cd private/completed/0/ && zip -r -0 ../0.zip ./* && rm -R 0/ && cd -
cd private/completed/1000/ && zip -r -0 ../1000.zip ./* && rm -R ../1000 && cd -
cd private/completed/2000/ && zip -r -0 ../2000.zip ./* && rm -R ../2000 && cd -
cd private/completed/3000/ && zip -r -0 ../3000.zip ./* && rm -R ../3000 && cd -
cd private/completed/4000/ && zip -r -0 ../4000.zip ./* && rm -R ../4000 && cd -
....

cd private/completed/2800000/ && zip -r -0 ../2800000.zip ./* && rm -R ../2800000 && cd -

更新:非常感谢您提供有用的链接,Kusalananda(将多个目录压缩到单独的 zip 文件中的命令)。我使用了相关答案中的代码并对其进行了稍微修改,以使其完全按照我需要的方式工作。我添加了下面的结果代码:

#!/bin/bash
cd private/completed/
for i in {0..2800000..1000}; do echo "$i" ; cd "$i" ; zip -q -r -0 ../"${i%/}.zip" . && cd .. && rm -R "$i" ; done

答案1

您可以使用 for 循环;像这样;例如: seq 开始 步骤结束

for  i in `seq 1000 1000 2000000`;do echo $i; done;

您可以使用 cp 命令并使用 $i 作为目录名称和文件夹名称

答案2

更新:非常感谢您提供有用的链接,Kusalananda(将多个目录压缩到单独的 zip 文件中的命令)。我使用了相关答案中的代码并对其进行了稍微修改,以使其完全按照我需要的方式工作。我添加了下面的结果代码:

#!/bin/bash
cd private/completed/
for i in {0..2800000..1000}; do echo "$i" ; cd "$i" ; zip -q -r -0 ../"${i%/}.zip" . && cd .. && rm -R "$i" ; done

相关内容