Nuestro desafío es que necesitamos buscar y duplicar aproximadamente 3000 imágenes en una nueva carpeta.
La lista de nombres de imágenes es un archivo csv. Los archivos están todos en una unidad, pero en muchas carpetas diferentes.
Nuestro desafío es que necesitamos buscar y duplicar aproximadamente 3000 imágenes en una nueva carpeta.
La lista de nombres de imágenes es un archivo csv. Los archivos están todos en una unidad, pero en muchas carpetas diferentes.
Usando Bash:
#!/bin/bash
cat /path/to/file.csv | while IFS=, read col1 col2 col3
do
find . -path "$col1" -exec cp {} /DESIRED/DIRECTORY \;
done
IFS
es el separador de campo de entrada. Declare como ,
para .csv
. find . -path
busca nombres en su directorio de inicio de forma recursiva
lea de col1
, devolviendo la ruta completa. exec
ejecuta el comando cp
en {}
, que representa todos los resultados find
devuelve /DESIRED/DIRECTORY
y se requiere \;
para terminar el comando exec
Aquí hay un simple script en Python que hará el truco:
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,";"])
Establezca csv_path, search_path y output_path en consecuencia. Es cualquier tipo de formato CSV remotamente estándar, debería poder autodetectarlo. El CSV no debe tener filas de encabezado y debe establecer line[0]
en el número de la columna que contiene los nombres de archivo (comenzando en 0 para la primera columna).
Yo usaría applescript .
Abra el archivo csv en Excel, tome los archivos, luego pase la variable al terminal donde ejecutará un comando find
seguido de un comando copy
al directorio de su elección.
Aquí hay algunos consejos:
Recorrer el csv.
Lea otras preguntas en las etiquetas mavericks automation