Automator replicare file in più cartelle

Mac OS X e le sue Applicazioni

Moderatore: ModiMaccanici

Pietrod
Stato: Non connesso
Nuovo Maccanico
Nuovo Maccanico
Iscritto il: mar, 27 mar 2018 12:46
Messaggi: 6

Top

Ciao, è il mio primo post, io avrei bisogno di copiare dei file (7 per l'esattezza) sempre uguali,
in una serie di cartelle (più di 200),
c'è un modo per evitare di fare mela+V più di 200 volte?
perché anche su automator devo specificare la cartella di destinazione non posso aggiungere per tutte le sottocartelle.
Grazie

Avatar utente
LeoTM
Stato: Non connesso
Expert
Expert
Avatar utente
Iscritto il: dom, 29 giu 2014 21:31
Messaggi: 874
Località: In movimento

Top

Contatta:
Pietrod ha scritto:Ciao, è il mio primo post, io avrei bisogno di copiare dei file (7 per l'esattezza) sempre uguali,
in una serie di cartelle (più di 200),
c'è un modo per evitare di fare mela+V più di 200 volte?
perché anche su automator devo specificare la cartella di destinazione non posso aggiungere per tutte le sottocartelle.
Grazie
più semplicemente potrebbe bastare anche uno scriptino bash ;)

Codice: Seleziona tutto

#!/bin/sh

cp /sourcefolder/* /myfolder1/
cp /sourcefolder/* /myfolder2/
.
.
.
questa è la versione brutale, si può sofisticarla come meglio si crede.

ps: e vai a presentarti altrimenti ciccia che ti diamo una mano. :D

Avatar utente
Hammarby
Stato: Non connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: gio, 29 ott 2009 14:28
Messaggi: 5348
Località: Stockholm, SE

Top

Ti crei uno scriptino : apri un editor e crea un file chiamandolo copia_multipla.sh dentro la directory dove sono i tuoi sette files
Ti segni la directory di partenza dove sono tutte le tue cartelle di destinazione ed inoltre devi conoscere una sottostringa che appartenga a tutte le cartelle
Fatto questo modifichi il codice inserendo queste informazioni e lo lanci

Codice: Seleziona tutto

#/bin/bash
for file in $(find /home/w* -name public_html -type d)
do
cp file1 ${file}
cp file2 ${file}
cp file3 ${file}
cp file4 ${file}
cp file5 ${file}
cp file6 ${file}
cp file7 ${file}
done 
Esempio 1 : le tue cartelle sono tutte allo stesso livello, con i nomi a,b,c etc. , si trovano in /home/pippo/cartelle ed i tuoi files si chiamano file1 file2 ... file7

Codice: Seleziona tutto

#/bin/bash
for file in $(find /home/pippo/cartelle -name * -type d)
do
cp file1 ${file}
cp file2 ${file}
cp file3 ${file}
cp file4 ${file}
cp file5 ${file}
cp file6 ${file}
cp file7 ${file}
done 
Esempio 2 : le tue cartelle sono tutte allo stesso livello, con i nomi a,b,c etc. , ognuna di loro ha dentro una directory che si chiama "destinazione", si trovano in /home/pippo/cartelle ed i tuoi files si chiamano file1 file2 ... file7

Codice: Seleziona tutto

#/bin/bash
for file in $(find /home/pippo/cartelle/* -name destinazione -type d)
do
cp file1 ${file}
cp file2 ${file}
cp file3 ${file}
cp file4 ${file}
cp file5 ${file}
cp file6 ${file}
cp file7 ${file}
done 
Ognuno è come Dio lo ha fatto, ahimé...
...e spesso peggio.

Cervantes

Pietrod
Stato: Non connesso
Nuovo Maccanico
Nuovo Maccanico
Iscritto il: mar, 27 mar 2018 12:46
Messaggi: 6

Top

Grazie ragazzi siete gentilissimi,
ho provato ad applicare quello che mi avete scritto ma essendo ignorante in programmazione e il risultato è un'errore, ho allegato la schermata,
Allegati
Schermata 2018-03-27 alle 14.07.45.png
Schermata 2018-03-27 alle 14.07.45.png (99.53 KiB) Visto 442 volte
Schermata 2018-03-27 alle 14.06.11.png
Schermata 2018-03-27 alle 14.06.11.png (160.19 KiB) Visto 442 volte

Avatar utente
Hammarby
Stato: Non connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: gio, 29 ott 2009 14:28
Messaggi: 5348
Località: Stockholm, SE

Top

Prova a mettere /Volumes/... /Backstage tra doppi apici.
Le stringhe con gli spazi non piacciono troppo a bash
Ognuno è come Dio lo ha fatto, ahimé...
...e spesso peggio.

Cervantes

Pietrod
Stato: Non connesso
Nuovo Maccanico
Nuovo Maccanico
Iscritto il: mar, 27 mar 2018 12:46
Messaggi: 6

Top

Hammarby ha scritto:Prova a mettere /Volumes/... /Backstage tra doppi apici.
Le stringhe con gli spazi non piacciono troppo a bash
ho tolto gli spazi (anche nel nome delle cartelle ovviamente) ho provato anche con gli apici, ma non cambia niente, infatti l'edito mi evidenzi la parola "for"
sembra si blocchi già li

Avatar utente
LeoTM
Stato: Non connesso
Expert
Expert
Avatar utente
Iscritto il: dom, 29 giu 2014 21:31
Messaggi: 874
Località: In movimento

Top

Contatta:

Codice: Seleziona tutto

for file in $(find "source folder/whatever/some more names" -name "somenamepattern*" -type d (o f, dipende se vuoi directory o file))
do
.
.
.
done
conviene mettere tra doppi apici sia la cartella dove eseguire il find che il pattern da cercare.

Pietrod
Stato: Non connesso
Nuovo Maccanico
Nuovo Maccanico
Iscritto il: mar, 27 mar 2018 12:46
Messaggi: 6

Top

LeoTM ha scritto:

Codice: Seleziona tutto

for file in $(find "source folder/whatever/some more names" -name "somenamepattern*" -type d (o f, dipende se vuoi directory o file))
do
.
.
.
done
conviene mettere tra doppi apici sia la cartella dove eseguire il find che il pattern da cercare.
niente.. neanche così
Allegati
Schermata 2018-03-27 alle 15.18.45.png
Schermata 2018-03-27 alle 15.18.45.png (169.9 KiB) Visto 428 volte

Avatar utente
Hammarby
Stato: Non connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: gio, 29 ott 2009 14:28
Messaggi: 5348
Località: Stockholm, SE

Top

Il problema è il tuo editor,
questo non è linguaggio C ma linguaggio shell e quello che ti evidenzia non è un errore in shell.

Potresti provare ad usare direttamente la shell /bin/sh come in questo esempio

Codice: Seleziona tutto

#!/bin/sh
for i in $( jot 0 10 ); do echo "output: $i"; done
Copia il codice sopra in un file prova.sh e poi eseguilo da terminale scrivendo

Codice: Seleziona tutto

/bin/sh ./prova.sh
Poi prova ancora con questo esempio

Codice: Seleziona tutto

max=10
for i in `eval echo {2..$max}`
do
    echo $i
done
Ognuno è come Dio lo ha fatto, ahimé...
...e spesso peggio.

Cervantes

Pietrod
Stato: Non connesso
Nuovo Maccanico
Nuovo Maccanico
Iscritto il: mar, 27 mar 2018 12:46
Messaggi: 6

Top

Hammarby ha scritto:Il problema è il tuo editor,
questo non è linguaggio C ma linguaggio shell e quello che ti evidenzia non è un errore in shell.

Potresti provare ad usare direttamente la shell /bin/sh come in questo esempio

Codice: Seleziona tutto

#!/bin/sh
for i in $( jot 0 10 ); do echo "output: $i"; done
Copia il codice sopra in un file prova.sh e poi eseguilo da terminale scrivendo

Codice: Seleziona tutto

/bin/sh ./prova.sh
Poi prova ancora con questo esempio

Codice: Seleziona tutto

max=10
for i in `eval echo {2..$max}`
do
    echo $i
done
No niente, scusate sicuramente è colpa della mia ignoranza.
Ci rinuncio

Rispondi

Torna a “Software”

Chi c’è in linea

Visitano il forum: Nessuno e 13 ospiti