我正在做一个项目,需要用 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
适当选择开始日期和结束日期(在条件内)。