【发布时间】:2019-07-15 19:41:27
【问题描述】:
我必须处理 2775 个文件夹,每个文件夹都包含一些文件。每个文件夹命名为 conf+n,其中 n 是一个范围从 1 到 2775 的数字(例如 conf1、...conf250、...conf2775)。我创建了一些父文件夹,命名为 A10、A20...A100、A200、...A1000、A2000 等。问题如下:我想移动前 100 个文件夹,所以 conf1-conf100 到 A100,conf101- con200 转 A200 等。
问题是文件夹总数 (2775) 不固定,因为我希望我的脚本适应不同范围的文件夹。
在我的试用脚本中,我创建了 250 个 conf# 文件夹和 25 个 A# 文件夹,但是在将 conf1-conf10 移动到 A10、conf11-conf20 到 A20 等的过程中遇到了困难。我尝试为循环,但它失败了。
#!/bin/bash
for d in ./test_abc/
do (cd "$d" &&
for ((i=1;i<=250;i++))
do
mkdir $i
done);
done
while true; do
if [ "250" -le "500" ];
then
pfldrs=$((250 / 10))
echo -en '\n'
echo -e "\x1B[31m CREATING BLOCKS ...\x1B[0m \x1B[32m $op \x1B[0m"
echo -en '\n'
for d in ./test_abc/
do (cd "$d" &&
for ((k=1;k<=$pfldrs;k++))
do
m=$(($k*10))
mkdir A$m
done);
done
break
fi
done
我希望 A10 文件夹包含文件夹 conf1-con10,文件夹 A20 包含文件夹 conf11-conf20 等。
提前感谢您的帮助!
【问题讨论】:
-
此测试
if [ "250" -le "500" ]将始终为真。 -
是的,在这种情况下是的。但这是一个更大脚本的片段,我在其中提供了几个范围来创建文件夹,这取决于用户定义的采样频率。
-
我相信这是一个可怕的缩进。做
echo -en '\n'太奇怪了,为什么不只是echo?I create 250 conf# folders只是seq -f './test_abc/%.0f' 1 250 | xargs mkdir。so conf1-conf100 to A100- 要将conf2775移动到A2800或A2775吗?只需使用步骤100生成从0到( 2775 + 100 ) % 100 * 100的数字,然后只需将范围内的所有文件移动到目标位置。 -
named A10, A20...A100so conf1-conf100 to A100A10 folder to contain folders conf1-con10,- 那么您创建A10和A20文件夹是为了什么?目标文件夹名称是 100 间隔还是 10 间隔或 1000 间隔? -
主脚本必须处理 ~ 2775 个文件夹。我发布的是一个试用版,一个关于它应该如何管理文件夹的示例。