Our challenge is that we need to search and duplicate approx 3000 images into a new folder.
The list of image names is a csv file. The files are all on one drive, but in many different folders.
Our challenge is that we need to search and duplicate approx 3000 images into a new folder.
The list of image names is a csv file. The files are all on one drive, but in many different folders.
Using Bash:
#!/bin/bash
cat /path/to/file.csv | while IFS=, read col1 col2 col3
do
find . -path "$col1" -exec cp {} /DESIRED/DIRECTORY \;
done
IFS
is the input field separator. Declare as ,
for .csv
.find . -path
searches through your home directory recursively for names
read from col1
, returning the full path. exec
executes the cp
command on {}
, which represents all the results find
returns/DESIRED/DIRECTORY
and \;
is required for terminating the exec
command Here's a simple python script that will do the trick:
import csv, subprocess
csv_path = '/Users/mdryden/Desktop/test2/test.csv'
search_path = '/Users/mdryden/Desktop/test2/'
output_path = '/Users/mdryden/Desktop/test3/'
with open(csv_path, 'rb') as csvfile:
dialect = csv.Sniffer().sniff(csvfile.read(1024))
csvfile.seek(0)
reader = csv.reader(csvfile, dialect)
for line in reader:
subprocess.call(["find", search_path, "-name", line[0],
"-exec", "cp", "{}", output_path,";"])
Set csv_path, search_path, and output_path accordingly. It it's any sort of remotely standard CSV format, it should be able to autodetect it.The CSV should have no header rows and you need to set line[0]
to the number of the column containing the file names (starting at 0 for the first column).
I would use applescript.
Open the csv file in excel grab the files, then pass the variable to the terminal where you would execute a find
command followed by a copy
command to the directory of your choice.
Here is some pointers:
Loop through the csv.