So I can easily create a smart collection of files that I didn't put into a collection, and that collection includes 90-95% of the photos in my catalog. I was wondering if I can leverage that collection to move the files to my backup drive, but retain the folder structure, i.e. (year > month > date) when the files are moved, while not impacting the photos / files that ARE in a collection. Is that most across hundreds of such folders?

My current flow is moving the entirety of the folders, but obviously then I am also moving the files I have edited. I know as long as the backup drive is visible I can still see and export those off-the-laptop files, but I would rather keep them but not the unpicked files. Note that I always import in the year > month > date tree folder structure and I would to keep that uniform.

Wondering if anyone has had success in doing something similar to the above.


2 Answers 2


You can click cmd-A (cntrl-A windows) to select all, then click on an image and drag/drop them to a new location. It will not recreate the date folder structure in the new location (AFAIK); but you can have the images sorted by capture date (i.e. in sequence).


I don't think there's a way to do this in the Lightroom GUI, but you could do it via a script:

  1. Get the paths of the photos not in a collection, either by accessing the LR database via SQLite(make a back-up!) or by going to the smart collection and dragging-and-dropping the photos into a text editor
  2. Now you have a list of full pathnames to the photos you want to move, I imagine it would look something like:
  1. Copy that list and apply some regex to change the first few levels of the path to match the intended destination, i.e.:
  1. Now you have two filelists, one containing the origin, one the destination.
  2. Pick any scripting language you're comfortable with and write a script that loops through the lists and copies the file from origin to destination. In pseudocode something like:
origin = load_file(origin.txt)
destination = load_file(destination.txt)

for i in length(origin):
    print(f"Copying file {origin(i)}")
    copy(origin(i), destination(i))

It's important in this whole process that the list order does not change in the origin or the destination list. You could add some verification to your script to make sure. Alternatively you could skip step 3, and come up with the destination path on the fly in your script.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.