【发布时间】:2019-12-29 22:04:23
【问题描述】:
我设法创建了一个脚本,该脚本循环遍历文件夹中的每个文件,提取年、月和日,然后为此创建文件夹结构。
对于一组文件,我最终会得到这样的文件夹:
2019
02 (February)
01 (Day 1)
03
01
02
问题:如何合并现有文件夹的比较并阻止脚本一遍又一遍地执行相同的操作?即,MKDIR 2019,MKDIR 2019 等。
如果在 2019 年创建了 10 个文件,则脚本会在第一个循环中创建文件夹,然后接下来的 9 次迭代会报告错误,因为该文件夹已经存在,尽管它仍然给出了预期的结果。
月文件夹和日文件夹也是如此。
这是我目前拥有的:
#!/bin/bash
for file in *
do
YEAR=$(date -r ${file} +"%Y")
MONTH=$(date -r ${file} +"%m")
DAYOFMONTH=$(date -r ${file} +"%d")
for year in $YEAR
do
mkdir $YEAR
for month in $MONTH
do
mkdir $YEAR/$MONTH
done
for day in $DAYOFMONTH
do
mkdir $YEAR/$MONTH/$DAYOFMONTH
done
done
cp ${file} $YEAR/$MONTH/$DAYOFMONTH
done
【问题讨论】:
-
使用
mkdir -p,如果目录已经存在则不会产生错误。换句话说,如果任何目录已经存在,调用mkdir -p "$YEAR/$MONTH/$DAYOFMONTH"并没有什么坏处。mkdir只会创建路径中需要的部分。 -
太棒了!谢谢你。比我尝试做的要容易得多。