6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Downloads フォルダとゴミ箱を定期的に自動削除する(Ubuntu, Mac, Windows)

Last updated at Posted at 2022-02-16

はじめに

ISMS (情報セキュリティマネジメントシステム) 対策等で Downloads フォルダとゴミ箱を定期的に自動削除したいことありますよね。
というわけで手順まとめます。

もっとスマートなやり方知ってる方、是非教えてください!

Ubuntu

Downloads フォルダ定期自動削除

$ crontab -e

以下の行追記。
削除日時や削除対象ファイルの数字はお好みで調整どうぞです。

# 毎月1日12時30分に ~/Downloads フォルダの更新日が60日前のファイルを削除
30 12 1 * * find ~/Downloads -mtime +59 -exec rm -rf {} \;

ファイル数確認。
ちゃんと減りましたね!

$ ls -1 ~/Downloads | wc -l

ゴミ箱定期自動削除

trash-cli インストール

$ sudo apt install trash-cli
$ crontab -e

以下2行追記

# 毎月1日12時30分にゴミ箱フォルダの更新日が60日前より古いファイルを削除
30 12 1 * * trash-empty 60

ファイル数確認。
ちゃんと減りましたね!

$ ls -1 ~/.local/share/Trash/files/ | wc -l

おまけ: crontab -r で設定消えちゃうの怖い問題

対処方法1: crontab -r 時確認してくれるようにする

元々 -i 付与で確認してくれるようになる。

$ crontab -ir
crontab: really delete <user>'s crontab? (y/n) 

~/.bash_aliases に追記
~/.bashrc でも動く

$ vi ~/.bash_aliases

以下2行追記

~/.bash_aliases
# crontab -r の削除時に確認させる
alias crontab="crontab -i"
$ source ~/.bash_aliases

通常通り crontab -r しても確認してくれる!安心!

$ crontab -r
crontab: really delete <user>'s crontab? (y/n) 

対処方法2: crontab -r を封印

~/.bash_aliases に追記
~/.bashrc でも動く

$ vi ~/.bash_aliases

以下追記

~/.bash_aliases
# crontab -r を封印する
function crontab() {
  local opt
  for opt in "$@"; do
    if [[ $opt == -r ]]; then
      echo 'crontab -r is sealed!'
      return 1
    fi
  done
  command crontab "$@"
}
$ source ~/.bash_aliases

通常通り crontab -r してもガードしてくれる!安心!

$ crontab -r
crontab -r is sealed!
$

注1

crontab -e ではなく、以下の /etc/cron.d/ に書くパターンは root ユーザー向けなので、一般ユーザーとしては推奨されません。
#初出時はこれ書いてましたが、、、社内有識者にコメントもらい、 crontab -e へ修正。。

$ cp /etc/crontab /etc/cron.d/test_cron
$ sudo vi /etc/cron.d/test_cron
$ sudo service cron restart

注2

~/.bash_aliases ではなく ~/.bashrc でも動きますが、
.bashrc に「推奨は ~/.bash_aliases 」な旨記載があります。

~/.bashrc
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

DeepL さんで翻訳

エイリアスの定義。
ここに直接追加するのではなく、~/.bash_aliasesのような別のファイルに追加するとよいでしょう。
bash-doc パッケージの /usr/share/doc/bash-doc/examples を参照してください。

Mac

Downloads フォルダ定期自動削除

GUI

Automator 使用。以下そのままどうぞ。

CUI

crontab 使用。

まずは cron のフルディスクアクセス許可。
https://prograshi.com/general/command/crontab-trouble-shooting/

$ crontab -e

以下追記

# 毎月1日12時30分に ~/Downloads フォルダの更新日が60日前のファイルを削除
30 12 1 * * find ~/Downloads -mtime +59 -exec rm -rf {} \;

ファイル数確認。
ちゃんと減りましたね!

$ ls -1 ~/Downloads | wc -l

ゴミ箱定期自動削除

Windows

Downloads フォルダ定期自動削除

ゴミ箱定期自動削除

参考

Ubuntu

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?