在 FTP 账户内创建新的文件夹结构

在 FTP 账户内创建新的文件夹结构

我正在做一个项目,需要用 FTP 帐户创建这种文件夹结构。我只有 FTP 帐户详细信息,没有服务器访问权限,

我可以连接 FTP 并手动创建目录,但我需要在 ftp 根目录中创建这样的文件夹结构。

    YYYY
    |_MM
    |_DD

2018
|_06
 |_01
 |_02
 |_03
 |_..............30
|_07
 |_01
 |_02
 |_03
 |_..............31

请建议无需手动创建文件夹即可完成它的最佳方法是什么。

根据评论中的一些提示进行编辑/

我编写了这个脚本来创建文件夹结构,但日期概念不适用于我的脚本。

#/bin/bash
for i in $(seq -w 12)
do  
    cd /home/user/upload/2018/
    mkdir $i
    cd $i
    for j in $(seq -w 31)
    do 
        mkdir $j
    done
done

答案1

以下bash脚本将创建您想要的目录结构:

#!/usr/bin/env bash

set -e

year=2018

mkdir "$year"

for month in {6..12}
do
    mkdir "$year"/"$month"
    days=$(cal "$month" "$year" | awk 'NF {DAYS = $NF}; END {print DAYS}')

    for ((i=1; i <= days; i++))
    do
    mkdir "$year"/"$month"/"$(printf "%02d\n" "$i")"
    done
done

用于tree查看结构:

$ tree 2018
2018
├── 10
│   ├── 01
│   ├── 02
│   ├── 03
│   ├── 04
│   ├── 05
│   ├── 06
│   ├── 07
│   ├── 08
│   ├── 09
│   ├── 10
│   ├── 11
│   ├── 12
│   ├── 13
│   ├── 14
│   ├── 15
│   ├── 16
│   ├── 17
│   ├── 18
│   ├── 19
│   ├── 20
│   ├── 21
│   ├── 22
│   ├── 23
│   ├── 24
│   ├── 25
│   ├── 26
│   ├── 27
│   ├── 28
│   ├── 29
│   ├── 30
│   └── 31
├── 11
│   ├── 01
│   ├── 02
(...)

检查给定月份有多少天的方法如下从这里

答案2

使用 GNU date,您可以通过直接增加日期并使用格式中的路径分隔符来实现,例如

d='2018/06/01'
while [ "$d" != "2018/12/31" ]; do 
  mkdir -p "$d"
  d="$(date '+%Y/%m/%d' -d "$d + 1 day")"
done

while适当选择开始日期和结束日期(在条件内)。

相关内容