I am organizing some images in DT at the moment and realize that I want to rename some of the images. I am unaware of any way of currently doing this in DT. I feel it would be a useful feature to improve the DAM capabilities of DT. Do others agree? Is there already a way of doing this? Would it be worth suggesting as a feature request?
For me, not very useful as I rarely rename anything😄 however I’m well aware that my DAM skills are fairly non existent so I think it’s a valid question. Be interested in others thoughts.
Not useful for me. In fact my raw files are read only on my file system.
Not useful for me, filenames are very much subsidiary to tags.
Not useful to me. The name of an image is not important to me. I never look at it except when using darktable and here I have what I need to create collection of images based on criteria (color, tag, camera, aperture…) or searching for a specific one. My picture are just named using the default when importing YYYYMMDD-nnnnn.EXT.
Not useful to me. My files and folders are named at import by Rapid Photo Downloader with this pattern:
preset_photo_rename\1\pref_list=Filename, Name, Original Case, Text, -, , Job code, , , Text, -ISO, , Metadata, ISO,
into a predetermined folder separated by filetype (PEF or JPG) under a subfolder of the camera model and year:
preset_photo_subfolder\1\pref_list=Date time, Image date, YYYY, Text, -, , Metadata, Hyphenated short camera model, UPPERCASE, /, , , Date time, Image date, YYMMDD, Text, -, , Job code, , , /, , , Filename, Extension, UPPERCASE:
Looks like I’m the odd man out here. Yes, I would like to be able to rename a selection of files in dt
I can only second the others: no need for a rename functionality for me. I either rename the images according to the sortable ISO timestamp + original name when I copy them from the card, or leave them as-is in case I forget.
The rest is off-topic, mostly about my workflow. Please don’t respond to that here, we can open a new topic if someone wants to discuss further - although I think there’s nothing more I could add:
I have a version of the renaming script that also renames XMP sidecars; I can then simply remove the images of a given directory from darktable and then reimport them. Somehow, I’ve always felt that for me RPD needed more effort than using a file manager to copy and a script to rename, even though I know it could do all of that automatically. My directory structure is also date-based (two parallel trees, one for family events, one for solo), with one directory per year, and inside that one year-month-day-description directory per occasion. When the children were small and I shot more, I also had a subdirectory for the month.
I rename before import with a shell script (using the exif dateTaken field) and then never need to touch the filename again.
two odd people out here but unless I learn to code I have no right to expect developers to do this just because I would like the feature.
When I was beginning with darktable, yes this would have been useful. Since the feature wasn’t available, I learnt to write a script that renames my files with date before import, which I’ve come to see is a better workflow.
In my workflow, I treat raw filenames like the data they contain: pure input. Only after development do I catalogue and sort them, which is where I start caring about file names. But not before.
That is an excellent idea.
In my opinion, this would be very useful. DAM is inseparable from the global photo editing process. And I try to keep my photo file structure independent of DT (who knows…). One example of how useful it is, is to add a suffix to the 4 digits number (because for unknownm reason, manufacturers are still using a 50 years old CPM-limited naming scheme in 2023…). Sor for exemple Z7-1234-A, where A is the first 10000 pictures for my Z7. It happened several times that I made a mistake during import. I know I can delete the photos from DT, rename the .NEF & .xmp and re-import. But this is a long cumbersome process, it will be better to just be able to do it inside DT. Thx
Not useful for me as I never manage files directly but always search/export/copy file using tags and dates to select them. Thus I never even look at the files name.
Not useful for me. I let darktable rename the files on import, after that I never touch the file names.
I think I gave my answer implicitly in my reply to @paperdigits , but I will say explicitly, I do not need the ability to rename image files from within darktable.
There is a lua script, contrib/rename_images.lua, that can rename images and also move them (if you choose a different directory name).
Thanks Bill for having written a lua script that does precisely what I want. I am so pleased to now have this ability in the lighttable view.
If anyone decides to use the script I would point out that you need to type the file extension in as part of the new name. For instance I had an image I wanted to use for teaching purposes and wanted to change the name from irrelevant numbers given by the camera to a meaningful name for my students. I wanted to name the image Traditional Dancer but discovered I had to actually name it Traditional Dancer.orf to have it correctly recognized. I presume there is no way to automatically have the file extension applied by the lua script?
The original file extension is saved in the variable FILE_EXTENSION, so you could specify <new filename pattern>.$(FILE_EXTENSION)
The variables that the script recognizes are
placeholders = {"ROLL_NAME",
"FILE_FOLDER",
"FILE_NAME",
"FILE_EXTENSION",
"ID",
"VERSION",
"SEQUENCE","
YEAR",
"MONTH",
"DAY",
"HOUR",
"MINUTE",
"SECOND",
"EXIF_YEAR",
"EXIF_MONTH",
"EXIF_DAY",
"EXIF_HOUR",
"EXIF_MINUTE",
"EXIF_SECOND",
"STARS",
"LABELS",
"MAKER",
"MODEL",
"TITLE",
"CREATOR",
"PUBLISHER",
"RIGHTS",
"USERNAME",
"PICTURES_FOLDER",
"HOME",
"DESKTOP",
"EXIF_ISO",
"EXIF_EXPOSURE",
"EXIF_EXPOSURE_BIAS",
"EXIF_APERTURE",
"EXIF_FOCUS_DISTANCE",
"EXIF_FOCAL_LENGTH",
"LONGITUDE",
"LATITUDE",
"ELEVATION",
"LENS",
"DESCRIPTION",
"EXIF_CROP"},
The variables are set from each image to be renamed, so you can reuse any part you need by specifying $(variable name)
.