Copia i primi n file da una directory a un'altra

3

Sto cercando di copiare i primi file 'n' da una directory in un'altra directory preferibilmente con solo strumenti cli (senza script).

Ho provato quanto segue:

  • find . -maxdepth 1 -type f | head -5 | xargs cp -t /target/directory

    This looked promising, but failed because osx cp command doesn't appear to have the
    -t switch

  • exec in alcune configurazioni diverse

    This probably failed for syntax problems on my end : /
    I couldn't seem to get a head type selection working

Qualsiasi aiuto o suggerimento sarebbe apprezzato.

Grazie in anticipo!

    
posta visyoual 13.09.2018 - 17:26
fonte

2 risposte

4

Hai bisogno dell'opzione -J con xargs .

find . -maxdepth 1 -type f | head -n5 | xargs -J X cp X /target/directory

L'opzione J colloca tutti i nomi di file nel segnaposto X, che può essere qualsiasi carattere (i) e cp accetta più file in una directory di destinazione. Può essere visualizzato come -

cp file1 file2 file3 file4 file5 DESTINATION

EDIT:

Per gestire i nomi di file con spazi, abbiamo trovato stampare il carattere null dopo ogni nome di file e poi avere xargs gestire il bit null.

 find . -maxdepth 1 -type f -print0 | head -n5 | xargs -0 -J X cp X /target/directory
    
risposta data 13.09.2018 - 18:01
fonte
0

Ho trovato una soluzione diversa senza xargs o -exec ma penso che la risposta di fd0 sia un modo migliore per andare:

while IFS= read -r f; do cp "$f" "/target/directory/"; done < <(find . -maxdepth 1 -type f | head -n5)
    
risposta data 13.09.2018 - 18:18
fonte

Leggi altre domande sui tag