tar
lo farà per te molto velocemente.
TEST
Per prima cosa ho creato 2 directory e 10 file:
% mkdir test1 test2 ; cd test1
% for n in `seq 1 10` ; do touch ABC.file$n ; done
% ls
> ABC.file1 ABC.file2 ABC.file4 ABC.file6 ABC.file8
> ABC.file10 ABC.file3 ABC.file5 ABC.file7 ABC.file9
Poi le ho copiate:
% tar -cf - ./* |\
tar -C../test2 --transform='s/ABC/DEF/' -xf -
% ls ../test2
> DEF.file1 DEF.file2 DEF.file4 DEF.file6 DEF.file8
> DEF.file10 DEF.file3 DEF.file5 DEF.file7 DEF.file9
TRASFORMARE
Quindi GNU tar
accetterà un sed --transform=EXPRESSION
per rinominare i file. Questo può anche rinominare solo alcuni dei file. Per esempio:
% tar -cf - ./* |\
tar -C../test2 --transform='s/ABC\(.*[0-5]\)/DEF\1/' -xf -
% ls ../test2
> ABC.file6 ABC.file8 DEF.file1 DEF.file2 DEF.file4
> ABC.file7 ABC.file9 DEF.file10 DEF.file3 DEF.file5
Quindi questo è un vantaggio.
STREAM
Considera anche che si tratta solo di due tar
processi e che non cambierà indipendentemente dal conteggio dei file.
tar | tar
tar
è ottimizzato come si potrebbe desiderare. Ciò non avrà mai conteggi di argomenti problematici o processi figlio in fuga. Questo è solo A> B. fatto.
ARGOMENTI
Uso 7 argomenti distinti combinati tra i miei due tar
processi qui. Quello più importante è elencato qui prima:
-
stdout / stdin - questo informa tar
che eseguirà lo streaming del suo input o output verso o dal stdin/stdout
quale interpreterà correttamente a seconda che stia costruendo o estraendo o meno un archivio.
-c
crea - questo dice tar
di costruire l'archivio. Il prossimo argomento tar
prevede che ...
-f
file : specifichiamo che tar
funzionerà con un file
oggetto anziché con un dispositivo a nastro o altro. E il file con cui lavorerà, come notato sopra, è stdin/stdout
- in altre parole, il nostro |pipe
.
./*
tutti i $ PWD / file - non c'è molto da spiegare qui, tranne per il fatto che l'argomento di archivio viene prima, -
quindi ./*
.
... e dall'altra parte del |pipe
...
-C
cambia directory : informa tar
che deve passare alla directory specificata prima di eseguire qualsiasi altra azione, in modo efficace appena cd ../test2
prima dell'estrazione.
--transform='s/ed/EXPR/'
- come già accennato, ciò ha comportato la ridenominazione. Ma i documenti indicano che può prendere qualsiasi sed
espressione o //flag
.
-x
extract - dopo aver tar
apportato modifiche alla nostra directory di destinazione e riceve le nostre istruzioni di ridenominazione, le chiediamo di iniziare a estrarre tutti i file nella sua directory corrente dal -f - |pipe
file di archivio. Nessun mistero.
mc
gestore di file ha un supporto molto esteso per questo tipo di rinominazioni di massa.