linux下用脚本将目录内的文件分类到各自的创建年份(如2023)或年月份(如2023/202308)目录内

第一个if判断语句中判定只有是文件的时候才执行mv操作,并忽略一些特定

第二个if判断目录不存在时创建目录

最后mv文件到目录内

脚本执行前目录内容:

2022-01-file

2023-02-file

脚本执行后目录内容:

2022

|2022-01-file

2023

|2023-02-file

bash 复制代码
#!/bin/bash
#for line in `ls -lhrt`
for line in `ls -lhrt | grep -v moveToModifyDir.sh | awk -F " " '{ print $9}'`
do
    if [ -f "$line" ] && [ "$line" != "" ] \
        && [ "$line" != "." ] \
        && [ "$line" != ".." ] \
        && [ "$line" != "desktop.ini" ] \
        && [ "$line" != "@eaDir" ] \
        && [ "$line" != "Thumbs.db" ]
    then
        modifyYear=`stat $line | grep Modify | awk -F " " '{ print $2 }' | awk -F "-" '{ print $1 }'`
        modifyMonth=`stat $line | grep Modify | awk -F " " '{ print $2 }' | awk -F "-" '{ print $2 }'`
        echo "file: $line modifyYear is: $modifyYear modifyMonth is: $modifyMonth"
        realDir="${modifyYear}${modifyMonth}/"
        if [ ! -d $realDir ]
        then
            echo "$realDir not exist, ready to mkdir"
            mkdir $realDir
        elif [ -d $realDir ]
        then
            echo "$realDir exist..."
        fi
        echo "realDir is: $realDir"
        mv $line $realDir
    fi
done

第二个脚本是先创建年份目录,再创建年+月子目录,并将文件移动到子目录内

脚本执行前目录内容:

2022-01-file

2023-02-file

脚本执行后目录内容:

2022

|2022-01

|2022-01-file

2023

|2023-02

|2023-02-file

bash 复制代码
#!/bin/bash
for line in `ls -lhrt | grep -v "moveToModifyDir.sh\|moveToYearDateDir.sh" | awk -F " " '{ print $9}'`
do
    if [ -f "$line" ] && [ "$line" != "" ] \
        && [ "$line" != "." ] \
        && [ "$line" != ".." ] \
        && [ "$line" != "dl.sh" ] \
        && [ "$line" != "desktop.ini" ] \
        && [ "$line" != "@eaDir" ] \
        && [ "$line" != "urls.txt" ] \
        && [ "$line" != "Thumbs.db" ]
    then
        modifyYear=`stat $line | grep Modify | awk -F " " '{ print $2 }' | awk -F "-" '{ print $1 }'`
        modifyMonth=`stat $line | grep Modify | awk -F " " '{ print $2 }' | awk -F "-" '{ print $2 }'`
        echo "file: $line                       modifyYear is: $modifyYear modifyMonth is: $modifyMonth"
        realDir="${modifyYear}/${modifyYear}${modifyMonth}/"
        echo "realDir is: $realDir"
        if [ ! -d $realDir ]
        then
            echo "\"$realDir\" dir not exist, ready to mkdir: $realDir"
            mkdir -p $realDir
        elif [ -d $realDir ]
        then
            echo "\"$realDir\" dir exist"
        fi
        mv $line $realDir
    fi
done
相关推荐
云泽8082 小时前
从零搭建 WSL2 + Ubuntu C/C++ 开发环境:原理、实践与底层架构解析
linux·c++·windows·ubuntu·wsl2
bosins8 小时前
彻底解决 WSL 2.7+ 空闲自动关闭/内存回收导致 Docker 中断的问题
linux·docker·wsl·dashboard
LongRunning8 小时前
【Linux】H3网络(二)
linux
xx~t10 小时前
嵌入式学习——ARM1
linux·arm开发·嵌入式硬件·arm
xx~t10 小时前
嵌入式——ARM1(详细篇)
linux·arm开发·嵌入式硬件·arm
DYWorker00113 小时前
Linux驱动子系统:DMA-Buf —— Consumer和Provider(008)
linux·驱动开发
雯宝14 小时前
Linux 内核函数集
linux
GeW14 小时前
从挂科到高分通过:RHCE快速拿证的10个提分技巧
linux
鸠摩智首席音效师15 小时前
Linux /etc/nsswitch.conf 文件有什么作用 ?
linux
东城居士15 小时前
理解pinctrl和gpio子系统驱动
linux·嵌入式系统