使用shell脚本整理桌面

目的:

每天都有一些临时任务, 而且喜欢在桌面创建文件或者文件夹. 导致桌面越来越杂乱. 看着糟心. 每天将没处理的任务移到指定文件夹, 有时间了再同一处理. 针对这一情况,写了一个脚本来处理.

实现目标:
桌面志保留: 每日必看,每日任务,桌面整理.sh 三个文件. 其他文件都根据日期归档到每日任务.

整理前:


整理前.jpg

整理后:


整理后.jpg

其实世界使用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 退出时。改下面为关闭窗口就可以了。

推荐阅读更多精彩内容