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
相关推荐
A_New_World2 分钟前
Linux性能分析工具
linux
鹏大师运维5 分钟前
在银河麒麟V10 SP1上手动安装与配置高版本Docker的完整指南
linux·运维·docker·容器·麒麟·统信uos·中科方德
QMCY_jason8 分钟前
linux 内存占用排查 vm.nr_hugepages
linux·运维·服务器
cui_win19 分钟前
【基础】Golang语言开发环境搭建(Linux主机)
linux·golang·运维开发
ZPC82101 小时前
ubuntu 6.8.0 安装xenomai3.3
linux·运维·ubuntu
一梦浮华2 小时前
自学嵌入式 day30 IPC:进程间通信
linux·运维·服务器
CH_Qing2 小时前
【udev】关于/dev 设备节点的生成 &udev
linux·前端·网络
电脑能手2 小时前
遇到该问题:kex_exchange_identification: read: Connection reset`的解决办法
linux·ubuntu·ssh
snoopyfly~2 小时前
Ubuntu 24.04 安装配置 Redis 7.0 开机自启
linux·redis·ubuntu
精英的英2 小时前
在Ubuntu 24.04主机上创建Ubuntu 14.04编译环境的完整指南
linux·运维·ubuntu