请求指导:编写定时Bash脚本自动归类MP4文件至对应目录
实现每小时自动整理MP4文件的Bash脚本
需求说明
- 通过crontab每小时运行脚本
- 扫描指定源目录(示例为
/home/kali/Videos)下的所有.mp4文件 - 在目标目录(可替换为需求中的
/Other/Directory)为每个MP4文件创建与文件名(不含扩展名)同名的文件夹 - 将对应的MP4文件移入新建的文件夹
当前脚本存在的问题
你提供的脚本有几处需要修正的问题:
- 循环遍历了目录下所有文件,而非仅
.mp4文件,会误处理其他类型文件 mv命令写在done之外,只会执行一次,无法处理所有文件- 未处理文件夹已存在的情况,重复运行会报错
- 变量未加引号,遇到带空格的文件名会出错
- 未按照需求将文件夹创建到指定的目标目录(当前是在源目录创建)
修正后的脚本
#!/bin/bash # 定义源目录和目标目录,根据实际需求修改 SOURCE_DIR="/home/kali/Videos" TARGET_DIR="/Other/Directory" # 遍历源目录下的所有.mp4文件 for FILE in "$SOURCE_DIR"/*.mp4; do # 跳过不存在的文件(避免目录下无MP4时出现错误) [ -f "$FILE" ] || continue # 获取不含扩展名的文件名 BN=$(basename "$FILE" .mp4) # 构建目标文件夹路径 FOLDER_PATH="$TARGET_DIR/$BN" # 如果文件夹不存在则创建,-p参数确保父目录不存在时也能创建 mkdir -p "$FOLDER_PATH" # 将MP4文件移动到目标文件夹 mv "$FILE" "$FOLDER_PATH/" done
设置crontab定时运行
- 打开crontab编辑界面:
crontab -e
- 添加以下内容,实现每小时运行一次脚本(替换
/path/to/your/script.sh为脚本的实际路径):
0 * * * * /bin/bash /path/to/your/script.sh
- 保存退出即可,crontab会自动生效
内容的提问来源于stack exchange,提问作者Medic Behind You
相关产品推荐
相关产品推荐

