我的文件名始终以Y-M开头(例如2014-01) 现在所有文件都在一个目录中, 我想将它们分成一个根年目录(2014)和按月目录的子目录(01,02等)。
这是我到目前为止手动做的事情:
find /dirlocation/ -name "2014-12*" -type f -exec mv {} /pathtocp/2014/12 \;
我每次都会手动更改日期和cp目录..
有人可以帮我用bash脚本自动发生吗?
谢谢!
答案 0 :(得分:1)
尝试跑步:
for i in 2014 2015; do
for j in `seq 1 12`; do
j=`printf %.2d $j` #to convert 1 to 01
find /dirlocation/ -name "$i-$j*" -type f -exec mv{} /pathtocp/$i/$j \; #assuming this sentence is correctly written in question.
done;
done;
答案 1 :(得分:1)
另一种解决方案:
#!/bin/bash
for f in $(find . -type f -regextype posix-extended -regex "./[0-9]{4}-[0-9]{2}.*"); do
y=${f:2:4}
m=${f:7:2}
mkdir -p "$y/$m" && mv "$f" "$y/$m/$f"
done
假设:
- bash脚本从文件所在的路径运行