La nostra sfida è che dobbiamo cercare e duplicare circa 3000 immagini in una nuova cartella.
L'elenco di nomi di immagini è un file CSV. I file sono tutti su una sola unità, ma in molte cartelle diverse.
La nostra sfida è che dobbiamo cercare e duplicare circa 3000 immagini in una nuova cartella.
L'elenco di nomi di immagini è un file CSV. I file sono tutti su una sola unità, ma in molte cartelle diverse.
Utilizzo di Bash:
#!/bin/bash
cat /path/to/file.csv | while IFS=, read col1 col2 col3
do
find . -path "$col1" -exec cp {} /DESIRED/DIRECTORY \;
done
IFS
è il separatore del campo di input. Dichiara come ,
per .csv
. find . -path
cerca in modo ricorsivo nella tua home directory i nomi
leggi da col1
, restituendo il percorso completo. exec
esegue il comando cp
su {}
, che rappresenta tutti i risultati find
restituisce /DESIRED/DIRECTORY
e \;
è richiesto per terminare il comando exec
Ecco un semplice script python che farà il trucco:
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,";"])
Impostare csv_path, search_path e output_path di conseguenza. Si tratta di un qualsiasi formato CSV in remoto standard, dovrebbe essere in grado di rilevarlo automaticamente. Il CSV non dovrebbe avere righe di intestazione ed è necessario impostare line[0]
sul numero della colonna contenente i nomi dei file (a partire da 0 per la prima colonna).
Vorrei utilizzare applescript .
Apri il file csv in excel e carica i file, quindi passa la variabile al terminale dove eseguirai un comando find
seguito da un comando copy
nella directory di tua scelta.
Ecco alcuni suggerimenti:
Passa attraverso il csv.
Leggi altre domande sui tag automation mavericks