61a68b4 Add MacPorts installation instructions
~gpanders pushed to ~gpanders/pushbroom git
pushbroom
is a tool designed to help keep your filesystem clear of clutter.
Certain directories, such as your downloads directory, tend to accumulate a
large amount of old files that take up space. Over time, this clutter can
accumulate to a significant amount of storage space. pushbroom
gives you an
easy way to remove these old files.
pushbroom
is written in Python and should therefore work on any platform that
can run Python. For now, it is only officially supported for macOS and Linux.
The following package managers support pushbroom
:
sudo port install pushbroom
Install using pip:
pip install --user pushbroom
You must also copy the example configuration file to
~/.config/pushbroom/config
or create your own from scratch.
Check the releases page for the latest release. Download and extract the archive, then install with pip:
tar xzf pushbroom-vX.Y.Z.tar.gz
cd pushbroom-vX.Y.Z
pip install --user .
cp pushbroom.conf ~/.config/pushbroom/config
pushbroom
can be run from the command line using:
pushbroom
Use pushbroom --help
to see a list of command line options.
The pushbroom
configuration file is organized into sections where each section
represents a directory path to monitor. The default configuration file looks
like this:
[Downloads]
Path = ~/Downloads
Trash = ~/.Trash
NumDays = 30
This means that, by default, pushbroom
will monitor your ~/Downloads folder and
move any file or folder older than 30 days into your ~/.Trash directory.
If you don't want to move files into ~/.Trash but instead want to just delete
them, simply remove the Trash
option:
[Downloads]
Path = ~/Downloads
NumDays = 30
The name of the section (Downloads
in this example) is not important and can
be anything you want:
[Home Directory]
Path = ~
NumDays = 90
You can also specify an Ignore
parameter to instruct pushbroom
to ignore any
files or directories that match the given glob:
[Downloads]
Path = ~/Downloads
NumDays = 30
Ignore = folder_to_keep
Similarly, you can specify Match
to have pushbroom
only remove files that
match one of the given patterns:
[Vim Backup Directory]
Path = ~/.cache/vim/backup
NumDays = 90
Match = *~
Both Ignore
and Match
can be a list of patterns separated by commas.
[Home Directory]
Path = ~
NumDays = 365
Match = .*
Ignore = .local, .config, .cache, .vim
Note that .*
is not a regular expression for "match everything", but
rather a glob expression for "all files that start with a period".
The following configuration items are recognized in pushbroom.conf
:
Required
Absolute path to a directory to monitor. Tildes (~
) are expanded to the
user's home directory.
Specify where to move files after deletion. If omitted, files will simply be deleted.
Required
Number of days to keep files in Path
before they are removed.
Default: None
List of glob expression patterns of files or directories to ignore.
Default: *
List of glob expression patterns of files or directories to remove. If omitted, everything is removed.
Default: False
Securely delete files before removing them. Note that this option is mutually
exclusive with the Trash
option, with Trash
taking precedence if
both options are used.
Default: True
Remove empty subdirectories from monitored paths.
If you are using a Linux distribution that uses systemd, you can copy the
systemd service and timer files to ~/.local/share/systemd/
and enable
the service with
systemctl --user enable --now pushbroom
Note that you may need to change the path to the pushbroom
script in the
service file depending on your method of installation.
Another option is to install a crontab entry
0 */1 * * * /usr/local/bin/pushbroom
Send patches and questions to ~gpanders/pushbroom@lists.sr.ht.
Report a bug or open a ticket at todo.sr.ht/~gpanders/pushbroom.