I haven't posted here for a while, but I'd be grateful for help with this one. Running Xfce 4.6.2 and Thunar 1.0.2 in Debian Squeeze.
I can back up a selected file to a 'backups' directory with the Thunar custom action
cp %n ~/backups/%n
I can modify the filename of the copy to have 'b_' in front with
cp %n ~/backups/b_%n
However, custom actions does not let me add the output of the date command to the file name with
cp %n ~/backups/b_$(date +"%d-%b-%Y_%H:%M")_%n
This action just creates b_[filename].
I've tried a couple of ways to use a bash script in custom actions but haven't succeeded yet. Suggestions very welcome.
There's nothing special to do to point your custom action to a bash script... The script just has to be executable.
Hi, stqn. Many thanks for your quick reply.
Each of the scripts I've tried has been executable. In the 'command' box in the custom action dialogue, I've tried entering the path to the script, and also 'xfce4-terminal' followed by the path to the script. Neither works. The script is just the command I posted:
cp %n ~/backups/b_$(date +"%d-%b-%Y_%H:%M")_%n
I suspect the problem might be the expression '%n'. Obviously Thunar understands it, and 'cp' understands it when it's included in a custom action command, but maybe not when it's used in a simple bash script? (Although stat does.)
Whoops. Of course that script won't work, '%n' is meaningless outside the custom action context.
Still puzzled that I can prefix the copy's filename with any string I like, but not with the unrelated command output from date.
Something like this should work:
Custom action: /home/refugee/bin/backup.sh "%n"
backup.sh: cp $1 ~/backups/b_$(date +"%d-%b-%Y_%H:%M")_$1
(Not sure if you have to put quotes around %n or not.)
Many thanks, stqn, worked perfectly. No quotes needed on %n in the custom action command.
I'd tried putting in a placeholder ($0) in the script yesterday, but couldn't get the direction to the script correct in the custom action command.
Yeah I first tried ~/bin/script but it doesn't work as a custom action. The full path is needed. Glad it's working now!
Here's a step-by-step explanation for beginners like me!
Why this custom action is useful: When I'm working over several hours or days on a file (text in LibreOffice, spreadsheet in Gnumeric, image in GIMP, etc), I like to keep earlier versions as backups until work on the file is finished. In the past, I would open the file in the relevant application, think of a new name for that current version, save a copy with that name, and then start work on the file. This Thunar method has fewer steps and uses the same, easily understood naming convention for all file versions. It doesn't change the file suffix, as happens with the time-honoured 'save a copy as .bak', so the backups can be opened with the relevant applications from the Thunar GUI.
How to do it (please modify for your preferred file paths, etc):
1) Create a directory in your home directory called 'backups'.
2) Copy this into a text editor:
cp $1 ~/backups/$(date +"%d-%b-%Y_%H:%M:%S")_$1
3) Save this text file as stamper.sh in your home directory.
4) Make it executable in the Thunar GUI by right-clicking on stamper.sh; go to Properties/Permissions and tick the Program box.
5) In Thunar, go to Edit/Configure custom actions...
6) Click the + icon at right to add a new action.
7) On the Basic tab, enter
Name: Make time-stamped copy
Command: ~/stamper.sh %n
8) On the Appearance Conditions tab:
File pattern: put here the file suffix types you want to make time-stamped copies of, and separate them with a semicolon, e.g. *.txt;*.odt;*.gnumeric;*.png
Tick all the 'Files' boxes
9) Choose OK and close the custom action dialog box.
Now when you select a file in Thunar that has a suffix you chose in step (8), e.g. 'Important_document.odt', and right-click, you will see the entry 'Make time-stamped copy'. Choose this entry and a copy of the file will appear in your 'backups' directory with the date and time as a prefix, e.g. '6-Feb-2012_11:14:33_Important_document.odt'.
The details of the time stamp can be changed by editing the "%d-%b-%Y_%H:%M:%S" part of stamper.sh. There's a list of the strftime codes on the Xfce date-time plugin page, http://goodies.xfce.org/projects/panel- … ime-plugin.
Last edited by gnome_refugee (2012-02-05 23:47:18)
but what if I'd like the copied file to be "mydocument_120712.odt" like get the time stamp to append the doc name but inside the extension. ??
this would be tons more useful as then in backups -say there are over 100 files now- I can easily find all versions of "mydocument" and all of "myconfig" because they will be sorted alphabetically by the doc name and not by the timestamp.
Last edited by orbspider (2012-07-12 16:47:46)
Change the script to
cp $1 ~/backups/$1_$(date +"%d-%b-%Y_%H:%M:%S")
You'll now get files appearing in 'backups' with names like
Thunar will still recognise this file as an ODT and open it automatically with your default for this file type. Same with any other date-stamped file created by this method from mydocument.odt.
However, you can't use the right-click script method on the date-stamped file mydocument.odt_13-Jul-2012_20:28:09, because Thunar doesn't know what the heck a '.odt_13-Jul-2012_20:28:09' file is.
If you want to make a date-stamped version your working or final mydocument version, just delete the bit after '.odt'. You might find that's easier than deleting the stamp from mydocument_13-Jul-2012_20:28:09.odt!
I've found out that cp %n %n_1 does all I need because I don't need date-time stamp in particular
but to copy multiple files is more tricky, i've had no success yet
Edit: your file copy with time-stamp is a good idea, now think about it.
Last edited by orbspider (2012-07-13 19:48:44)