Vorrei copiare tutti i file da una directory ad eccezione di uno denominato Default.png. Sembra che ci siano diversi modi per farlo. Cosa ti sembra più efficace?BASH copia tutti i file tranne uno
risposta
semplice, se src/
contiene solo file:
find src/ ! -name Default.png -exec cp -t dest/ {} +
Se src/
ha sotto-directory, questo li omette, ma non copiare i file all'interno di esse:
find src/ -type f ! -name Default.png -exec cp -t dest/ {} +
Se src/
ha sottodirectory, questo non le riceva:
find src/ -type f -maxdepth 1 ! -name Default.png -exec cp -t dest/ {} +
Questo risulta essere il migliore per me perché sembrerebbe che OS X venga fornito senza glob abilitato. –
Qualcuno potrebbe spiegare per cosa è il "segno più" alla fine del comando? Ho sempre visto \; alla fine di un'opzione -exec, è lo stesso? – Max
@Max '\;' esegue il comando una volta per file. '+' esegue il comando una volta e passa tutti i nomi dei file contemporaneamente (soggetto al limite di lunghezza della riga di comando). '+' è un po 'più efficiente in generale. –
dovrebbe essere la seguente:
cp -r !(Default.png) /dest
Se la copia in una cartella annidata nella cartella corrente (chiamato esempio nel caso in basso) è necessario omettere quella directory anche:
cp -r !(Default.png|example) /example
Questo produce -bash:!: Evento non trovato –
Stai copiando i file in una cartella annidata all'interno della cartella da cui viene copiata? – Jon
Ciò richiede che 'shopt -s extglob' funzioni, se è stato disabilitato. –
I Basta fare:
cp srcdir/* destdir/ ; rm destdir/Default.png
a meno che i file non siano grandi. Altrimenti usa per es.
find srcdir -type f/ |grep -v Default.png$ |xargs -ILIST cp LIST destdir/
grep -v è tuo amico –
Il primo comando non è quello che l'OP chiedeva. Se 'Default.png' esiste nelle due directory, sostituirà quello in' destdir' con quello in 'srcdir', quindi cancellerà il' Default.png' copiato. Invece, l'OP vuole mantenere il 'Default.png' che già esiste in' destdir'. – SnowFrog
rsync è stata la mia cp sostituzione/SCP per lungo tempo:
rsync -av from/ to/ --exclude=Default.png
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
-v, --verbose increase verbosity
La tua risposta non mi è chiara come tutti i comandi rsync. Ecco perché non la uso. Che cos'è 'rlptgoD' e che cos'è' HAX'? Perché crei un archivio? – Simon
cp `ls | grep -v Default.png` destdir
Questo è più probabile che produca errori piuttosto che fare ciò che intendi. –
Questo mi sta meglio – once
# chattr +i /files_to_exclude
# cp source destination
# chattr -i /files_to_exclude
- 1. Come salvare tutti i file tranne uno con SVN
- 2. Nginx: Redirect tutti tranne uno
- 3. hgignore: è necessario ignorare tutti tranne uno .lib file
- 4. Riscrivi tutti gli URL tranne uno
- 5. Applicare lo stile a tutti i div tranne uno specifico
- 6. jQuery checkbox: seleziona tutti/nessuno tranne uno
- 7. Copia tutti i file nella directory
- 8. Bash. Cancella tutti i file e le directory ma alcuni
- 9. Elabora tutti gli argomenti tranne il primo (in uno script bash)
- 10. Come salvare tutti i file tranne uno in GitHub per Windows
- 11. Perché git ignora tutti i file in una directory tranne uno?
- 12. Posso ottenere un dump di tutti i miei database * tranne uno * usando mysqldump?
- 13. eliminare le cartelle, tranne uno
- 14. espressione regolare tutti i personaggi tranne ultimo
- 15. Rimuovere tutti i duplicati tranne ultima istanza
- 16. PHPUnit: mock tutti i metodi tranne alcuni
- 17. Come richiedere "tutti tranne uno" in grafite/grafana
- 18. Flag Tutti tranne uno duplicati in un elenco
- 19. Python xlwt: conserva tutti gli stili tranne uno
- 20. Cambiare l'opacità di tutti gli elementi tranne uno Div
- 21. Consentire tutti gli URL tranne uno in Spring security
- 22. Come nascondere tutti gli elementi tranne uno con jquery?
- 23. Gemfile richiede gemma in tutti gli ambienti tranne uno
- 24. Unisci tutti i file in una directory in uno usando bash
- 25. Come copiare tutti i file da una directory a un'altra in uno script bash
- 26. Posso usare un filtro su tutti i blocchi di compressione tranne uno?
- 27. Ignorare tutti i file in modo ricorsivo correttamente in una cartella specifica tranne uno specifico tipo di file
- 28. jQuery: target tutti tranne ___?
- 29. Gulp non copia tutti i file come previsto
- 30. panda usa tutti tranne l'ultimo
Perché avete bisogno di saltare quel file, piuttosto che semplicemente cancellarlo dopo averlo copiato? Esiste già nella directory di destinazione? –
Sì, un file con lo stesso nome è già presente nella directory di destinazione. –
@ LasseV.Karlsen: Oppure potresti risparmiare il tempo di copiarlo, se si tratta di un file di grandi dimensioni. Sono interessato a questo, ma escludendo una directory piuttosto che un file. –