Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/novoid/move2archive
Managing event-related files in a folder hierarchy like "<ARCHIVE>/2013/2013-05-17 Event name/"
https://github.com/novoid/move2archive
file files personal-information-management pim shell
Last synced: about 1 month ago
JSON representation
Managing event-related files in a folder hierarchy like "<ARCHIVE>/2013/2013-05-17 Event name/"
- Host: GitHub
- URL: https://github.com/novoid/move2archive
- Owner: novoid
- License: gpl-3.0
- Created: 2013-05-17T09:35:30.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2023-07-15T16:45:30.000Z (over 1 year ago)
- Last Synced: 2024-09-14T04:09:13.527Z (2 months ago)
- Topics: file, files, personal-information-management, pim, shell
- Language: Python
- Size: 207 KB
- Stars: 23
- Watchers: 4
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.org
- License: license.txt
Awesome Lists containing this project
README
* m2a.py
This script moves items (files or directories) containing ISO datestamps
like ~YYYY-MM-DD~ into a directory stucture for the corresponding year.You define the base directory either in this script (or using the
command line argument ~--archivedir~). The convention is, e.g.:#+begin_src bash
/2011
/2011/2011-12-20 Meeting Friends at Barleys
/2011/2011-12-20 Meeting Friends at Barleys/Tom with Beer.jpeg
#+end_srcThis script extracts the year from the datestamp of each file and
moves it into the corresponding directory for its year:#+begin_src bash
m2a 2010-01-01_Jan2010.txt 2011-02-02_Feb2011.txt
#+end_src
... moves ~2010-01-01_Jan2010.txt~ to ~/2010/~
... moves ~2011-02-02_Feb2011.txt~ to ~/2011/~OPTIONALLY: you can define a sub-directory name with option ~-d DIR~. If it
contains no datestamp by itself, a datestamp from the first file of the
argument list will be used. This datestamp will be put in front of the name:#+begin_src bash
m2a -d "2009-02-15 bar" one two three
#+end_src
... moves all items to: ~/2009/2009-02-15 bar/~#+begin_src bash
m2a -d bar 2011-10-10_one 2008-01-02_two 2011-10-12_three
#+end_src
... moves all items to: ~/2011/2011-10-10 bar/~If you feel uncomfortable you can simulate the behavior using the ~--dryrun~
option. You see what would happen without changing anything at all.For the complete usage help, please use the ~--help~ option.
- *Target group*: users who are able to use command line tools and who
are managing photographs and other event-related files in folder
structures.
- Hosted on github: https://github.com/novoid/move2archive** Why
There is no integrated software solution for managing photographs
that will (a) provide you all of the features you will ever want, (b)
be available for a long period of time, and (c) provide a
future-prove, platform-independent work-flow.This is the reason I came up with this method of organizing archive
files (photographs, scanned PDF files, memories, ...) in such a
folder structure.** Installation
Get it from [[https://github.com/novoid/move2archive][GitHub]] or install it via «pip install move2archive».
** Interactive Use
:PROPERTIES:
:CREATED: [2022-01-06 Thu 11:34]
:END:If you are using =m2a= in an interactive way, you need to know the
following behavior difference when you (1) provide a target directory
and (2) when no specific target directory is provided by you.Let's use two example files:
- =2020-07-13T13.55 xkcd about PIM.png=
- =2022-01-06 screenshot of my editor.png=Now let's assume those two files are the only PNG files in the current
directory and the following command line you're using: =m2a *png=First, let's take a look at the version (1) where you select or enter
a target directory to file to.*** Selecting a Target Directory
When asked "Please enter directory basename:" in the interactive
prompt you're entering "some images".This will result in *both* files moved to the one target directory
where the oldest date-stamp is used to determine the year:- =/2020/2020-07-13 some images/2020-07-13T13.55 xkcd about PIM.png=.
- =/2020/2020-07-13 some images/2022-01-06 screenshot of my editor.png=.This is because the files are grouped together to be filed to the same
spot when one single target directory is given.A handy feature of =m2a= is that it suggest existing folders in the
=archivepath=. So if you already do have a folder like
=/2020/2020-07-13 interesting stuff/= and you call =m2a=
with any file that starts with =2020-07-13...=, it shows a prompt
like:: One matching target directory found. Enter "1" if you want to use it:
: [1] 2020-07-13 interesting stuffIn the case you want to re-use this directory as the target directory
for the current files , you simply enter =1= to the prompt and the
files are moved to that directory. Isn't that handy?Now, let's compare with (2) when no target directory is given in the
next section.*** Not Selecting a Target Directory
This time, you do not enter anything in the target directory prompt
and you do not select a proposed target by entering a numeric
shortcut.This will result in each file moved to its corresponding yearly archive directory:
- =/2020/2020-07-13T13.55 xkcd about PIM.png=
- =/2022/2022-01-06 screenshot of my editor.png=*** On the Difference of Behavior
The reasoning behind this different behavior between a specific target
directory is provided and not is that you can use =m2a= to file away a
larger group of files to their yearly archive folders without the need
of filing each one individually or writing a loop command.However, when you do provide one single target directory, this is used
for all files, independent of their date-stamp (using the oldest
date-stamp).This might irritate at first but makes perfectly sense if you think
about it or the alternatives.** Bonus: integrating into Geeqie (or similar file browsers)
I am using [[http://geeqie.sourceforge.net/][geeqie]] for browsing/presenting image files. For quickly
moving files to their folders, I mapped this script to ~m~. This way,
I can go through new image files and move event-related photographs
very quickly.Using GNU/Linux, this is quite easy accomplished. The only thing that
is not straight forward is the need for a wrapper script. The wrapper
script does provide a shell window for entering the tags.~vk-m2a-wrapper-with-gnome-terminal.sh~ looks like:
#+begin_src bash
#!/bin/sh/usr/bin/gnome-terminal \
--geometry=157x56+330+5 \
--hide-menubar \
-x /home/vk/bin/m2a --pauseonexit "${@}"#end
#+end_srcIn ~$HOME/.config/geeqie/applications~ I wrote a desktop file such
that geeqie shows the wrapper script as external editor to its
image files:~$HOME/.config/geeqie/applications/m2a.desktop~ looks like:
#+begin_src bash
[Desktop Entry]
Name=m2a
GenericName=m2a
Comment=
Exec=/home/vk/src/misc/vk-m2a-wrapper-with-gnome-terminal.sh %F
Icon=
Terminal=true
Type=Application
Categories=Application;Graphics;
hidden=false
MimeType=image/*;video/*;image/mpo;image/thm
Categories=X-Geeqie;
#+end_srcIn order to be able to use the keyboard shortcuts ~m~, you can define
them in geeqie:
1. Edit > Preferences > Preferences ... > Keyboard.
2. Scroll to the bottom of the list.
3. Double click in the ~KEY~-column of ~m2a~ and choose
your desired keyboard shortcut accordingly.I hope this method is as handy for you as it is for me :-)
* Related tools and workflows
This tool is part of a tool-set which I use to manage my digital files
such as photographs. My work-flows are described in [[http://karl-voit.at/managing-digital-photographs/][this blog posting]]
you might like to read.In short:
For *tagging*, please refer to [[https://github.com/novoid/filetags][filetags]] and its documentation.
See [[https://github.com/novoid/date2name][date2name]] for easily adding ISO *time-stamps or date-stamps* to
files.For *easily naming and tagging* files within file browsers that allow
integration of external tools, see [[https://github.com/novoid/appendfilename][appendfilename]] (once more) and
[[https://github.com/novoid/filetags][filetags]].Moving to the archive folders is done using [[https://github.com/novoid/move2archive][move2archive]].
Having tagged photographs gives you many advantages. For example, I
automatically [[https://github.com/novoid/set_desktop_background_according_to_season][choose my *desktop background image* according to the
current season]].Files containing an ISO time/date-stamp gets indexed by the
filename-module of [[https://github.com/novoid/Memacs][Memacs]].Here is [[https://glt18-programm.linuxtage.at/events/321.html][a 45 minute talk I gave]] at [[https://glt18.linuxtage.at/][Linuxtage Graz 2018]] presenting the
idea of and workflows related to appendfilename and other handy tools
for file management:[[https://media.ccc.de/v/GLT18_-_321_-_en_-_g_ap147_004_-_201804281550_-_the_advantages_of_file_name_conventions_and_tagging_-_karl_voit/][bin/2018-05-06 filetags demo slide for video preview with video button -- screenshots.png]]
Other projects with similar features:
- https://github.com/velvet-jones/imgfiler/
* How to Thank Me
I'm glad you like my tools. If you want to support me:
- Send old-fashioned *postcard* per snailmail - I love personal feedback!
- see [[http://tinyurl.com/j6w8hyo][my address]]
- Send feature wishes or improvements as an issue on GitHub
- Create issues on GitHub for bugs
- Contribute merge requests for bug fixes
- Check out my other cool [[https://github.com/novoid][projects on GitHub]]* Local Variables :noexport:
# Local Variables:
# mode: auto-fill
# mode: flyspell
# eval: (ispell-change-dictionary "en_US")
# End: