¿Existe un script simple para duplicar archivos en una nueva carpeta basada en un archivo csv?

2

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.

    
pregunta midwest design firm 26.08.2014 - 20:37

3 respuestas

3

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
  • los archivos se copian a /DESIRED/DIRECTORY y se requiere \; para terminar el comando exec
respondido por el njboot 27.08.2014 - 18:46
1

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).

    
respondido por el Michael D. M. Dryden 27.08.2014 - 21:52
0

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.

    
respondido por el Deesbek 27.08.2014 - 17:37

Lea otras preguntas en las etiquetas