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
相关推荐
GeW1 小时前
红帽RHCE从挂科边缘到一次过,我做对了什么
linux
时空自由民.1 小时前
WSL解决USB 串口连接问题与linux串口权限问题
linux·单片机
OpenPomeloxCommunity2 小时前
Linux驱动基础(三):firmware的声明与加载
linux·操作系统
云计算练习生2 小时前
什么是系统调用?为什么程序访问硬件必须经过它
linux·windows·操作系统·系统调用·操作系统原理
玄芯散人3 小时前
【筑基·059】Linux命令行入门:工程师的操作系统
linux·操作系统·命令行
半仙白桑3 小时前
内核篇第二讲:Linux exec 函数族详解
linux·linux驱动
AR-26710-3 小时前
Linux Day7——建组/用户、umask、Python脚本
linux·python
吴声子夜歌3 小时前
Shell编程实例——内务及管理任务(一)
linux·运维·shell
byte轻骑兵4 小时前
【BlueZ 】input 模块:蓝牙鼠标/键盘等输入设备的基础适配逻辑
linux·人工智能·bluez·电脑蓝牙·嵌入式蓝牙
吴声子夜歌5 小时前
Shell编程实例——高级脚本编程(一)
linux·运维·网络·shell