目的:
每天都有一些临时任务, 而且喜欢在桌面创建文件或者文件夹. 导致桌面越来越杂乱. 看着糟心. 每天将没处理的任务移到指定文件夹, 有时间了再同一处理. 针对这一情况,写了一个脚本来处理.
实现目标:
桌面志保留: 每日必看,每日任务,桌面整理.sh 三个文件. 其他文件都根据日期归档到每日任务.
整理前:
整理后:
其实世界使用Move命令就可以. 但发现若文件名称中包含空格,会出问题. 所有对该问题进行了处理.
已知bug:
文件夹处理上有一些问题,log打印给人看着不爽, 但不影响使用. 有时间了再看看
脚本实现
#!/bin/bash
#桌面所有文件移动到今日目录
# 处理名称中包含空格的文件
function_safename(){
path=$1
echo "$path"
for file in ${path}; do
if [[ $file =~ "整理桌面.sh" ]]; then
echo "整理桌面.sh 不处理"
continue
fi
if [[ $file =~ "每日任务" ]]; then
echo "每日任务 不处理"
continue
fi
if [[ $file =~ "每日必看" ]]; then
echo "每日必看 不处理"
continue
fi
safename1="$(echo $file | sed 's/ /_-_/g')"
echo "convert >>>> ${safename1}"
mv "${file}" ${safename1}
done
}
#恢复名称中的空格
function_original(){
path=$1
for file in ${path}; do
original="$(echo $file | sed s'/_-_/ /g')"
echo "recover ---> ${original}"
mv ${file} "${original}"
done
}
#init
#进入桌面文件
cd ~/Desktop/ #将该路径设置为要整理的路径. 我就整理文件夹.
desktop=`pwd ~/Desktop`
workPath="$desktop""/*"
function_safename "$workPath" #去除文件名中的空格
savepath="/Users/Name/Desktop/每日任务/" #将该名称替换为想要保存的路径.
ls_date=`date +%Y%m%d`
targetPath="$savepath""$ls_date" #拼接字符串
# targetPath=${savepath}${ls_date}
#创建今日文件夹
if [ ! -d ${targetPath} ];then
mkdir ${targetPath}
echo "创建今日文件:${targetPath}"
else
echo "今日文件夹已经存在"
fi
#排除文件
worker=`ls | grep -v 整理桌面.sh |grep -v ABC.png | grep -ve 每日任务 | grep -ve 每日必看`
echo "$worker"
if [ -z "$worker" ]; then
echo "今日为处理文件为空"
else
mv $worker $targetPath
echo "今日未处理文件移动到今日文件:${targetPath}"
workPath2="$savepath""$ls_date""/*"
function_original "$workPath2"
echo " 今天的剩余任务已经归档到了每日任务. "
fi
另外. 执行完命令后,终端窗口自动关闭
可在: 终端-偏好设置-描述文件-shell-当 shell 退出时。改下面为关闭窗口就可以了。