I organize my pictures using a folder structure on an external hard drive. Every time I import new pictures from my camera, I move this pictures in these folders manually. This process is tedious, and in many cases, I have duplicate pictures in different folders.

I would like to know if there is any open-source software which would allow me to import pictures from my camera, skipping images that are already in my folder structure.

In the past, I used Apple iPhoto, which did a great job in that sense, but now I am looking for a suitable alternative.

  • 4
    \$\begingroup\$ Perhaps, once you've copied them off your camera/media, you could delete them from your camera/media so there's no chance of re-importing them again? \$\endgroup\$
    – twalberg
    Aug 28, 2018 at 19:03
  • 4
    \$\begingroup\$ I'm not sure whether this is really on topic here or whether it should be on Software Recommendations instead. However, at minimum we would need to know what platform you are on. \$\endgroup\$
    – Tetsujin
    Aug 28, 2018 at 19:04
  • \$\begingroup\$ @twalberg thanks for advice, in my specific case I need to keep some picture in the camera, so I have some risk of diplicates \$\endgroup\$
    – Radex
    Aug 28, 2018 at 19:05
  • 1
    \$\begingroup\$ Maybe it help us if you were to explain your entire workflow. \$\endgroup\$
    – frank
    Aug 28, 2018 at 21:08
  • 3
    \$\begingroup\$ I'm voting to close this question as off-topic because it has been double posted at softwarerecs.stackexchange.com/questions/51843/… \$\endgroup\$
    – Michael C
    Aug 28, 2018 at 21:26

3 Answers 3

  • Digikam is a cross-platform application that has the ability to import only images that have not already been imported. The feature is confusingly called "Download New". See Using a Digital Camera With digiKam.

  • To remove some of the tedium of manually organizing images, you can use exiftool to rename and organize files into folders by date-time:

    exiftool -v -P -q -fileOrder FileName \
       '-FileName<${DateTimeOriginal}%-c.%le' \
       '-FileName<${DateTimeOriginal}.\${ImageCount}%-c.%le' \
       '-FileName<${DateTimeOriginal}.\${SubSecTimeOriginal}%-c.%le' \
       '-d %Y%m%d/%Y%m%d-%H%M%S' \
       -ext jpg -ext mov -ext mp4 -ext avi -ext cr2 -ext raf -ext dng .

    Then you can use rsync to copy only the changed files to your hard drive:

    rsync -FatHz -h --info=progress2 [source]/ [destination]/
  • You can write your own scripts to keep track of files that have already been copied from the SD card. For example, on Linux, the following can be used:

    for file in *.jpg ; do
       if ! grep "$file" list.txt ; then
          echo "$file" >> list.txt
          cp "$file" "$destination"

    This approach can be improved by tracking checksums or other file metadata to avoid problems with filenames repeating at 0001.


You could use duplicate finder like Duplicate Photo Finder or VisiPics both works ok, you might find one or another clumsy to work with, but it really depends on your usage of older software.


So, the file name is what makes an image unique for system's understanding.

So, if you are on PC and copy the file you already copied, PC will give you an alert for the File already exists.

Not happening in your case?

  • \$\begingroup\$ it is a different case, I have a different folder structure source/target but same file name \$\endgroup\$
    – Radex
    Aug 28, 2018 at 19:11

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