Come posso scorrere una cartella e spostare / copiare ogni ennesimo elemento

4

Voglio fare un intervallo di tempo da una cartella di immagini, ma ce ne sono troppe e il lasso di tempo procede lentamente. Come posso selezionare, ad esempio, ogni 10 articoli e copiare o spostare gli elementi in una cartella separata?

    
posta Zarfing 26.01.2016 - 03:03
fonte

1 risposta

3

Il modo più rapido è utilizzare la sintassi bash e awk nel tuo Terminal.app

for file in 'find /SOURCE/DIR -type f | awk 'NR %10 == 0''; do echo mv $file /DEST/DIR ; done
L'istruzione

for introduce bash loop , per scorrere un insieme di dati in cui file è la variabile.

find analizza /SOURCE/DIR per ciò che è specificato.

| funge da pipe, passando stout da find indietro a stdin

awk interpreta lo stdin e stampa solo le linee che soddisfano le condizioni specificate da 'NR %10 == 0’

  • NR è un awk built-in variable che specifica il numero di record / linea da valutare.

  • % è un numerical operator che dice awk che i seguenti caratteri devono essere trattati come tali.

  • == è operatore relazionale per must be equal to..

  • 0 è l'espressione binaria per TRUE

Quindi, è tutto stravagante per "trova ogni 10 file che esiste in questa directory e lo manda in uscita ;

  • do introduce l'azione da eseguire sull'output.
  • echo è usato per ricontrollare il comando, i cui risultati saranno stampati su stout. Se tutto sembra a posto, rimuovilo ed esegui l'azione ( mv , cp )
  • mv è un comando bash incorporato per prendere un file e spostarlo (o rinominarlo).
  • cp è un altro comando bash incorporato per mv un file da una directory. ad un altro preservando l'originale. Puoi sostituire direttamente cp per mv se desideri preservare il contenuto della directory originale.
  • $file fa riferimento alla variabile file che è stata ora definita.

Quindi è tutto molto bello per dimmi cosa succede quando I ... ( echo ) " move (o, copy ) tutti i file specificati dai precedenti parametri in questa altra directory;"

  • done

Questo è tutto ciò che serve per dire a bash di terminare il ciclo da quando hai finito:)

    
risposta data 31.01.2016 - 01:40
fonte

Leggi altre domande sui tag