tar
le fera pour vous très vite.
TESTER
J'ai d'abord créé 2 répertoires et 10 fichiers:
% 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
Puis je les ai copiés:
% 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
TRANSFORMER
Donc, GNU tar
acceptera un sed --transform=EXPRESSION
changement de nom de fichier. Cela peut même ne renommer que certains fichiers. Par exemple:
% 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
C'est donc un avantage.
COURANT
Notez également qu'il ne s'agit que de deux tar
processus - et cela ne changera pas, quel que soit le nombre de fichiers.
tar | tar
tar
est aussi optimisé que vous le souhaitez. Cela n'aura jamais de compte d'arguments problématiques ni de processus enfants fugitifs. Ceci est juste A> B fait.
ARGUMENTS
J'utilise 7 arguments distincts combinés entre mes deux tar
processus ici. Le plus important est répertorié ici en premier:
-
stdout / stdin - cela indique tar
qu'il transmettra en flux continu soit son entrée, soit sa sortie ou à partir de stdin/stdout
laquelle il interprétera correctement selon qu'il s'agisse ou non de créer ou d'extraire une archive.
-c
create - cela indique tar
de construire l'archive. Le prochain argument tar
attendu est ...
-f
file - nous spécifions que nous tar
allons travailler avec un file
objet plutôt qu'avec un lecteur de bande ou autre. Et le fichier avec lequel il travaillera, comme indiqué ci-dessus, est stdin/stdout
- en d’autres termes, notre |pipe
.
./*
all $ PWD / files - pas trop à expliquer ici si ce n’est que l’argument de l’archive vient en premier, -
alors ./*
.
... et de l'autre côté de la |pipe
...
-C
change directory - cela indique tar
qu'il faut changer le répertoire que je spécifie avant d'effectuer toute autre action, donc c'est juste cd ../test2
avant l'extraction.
--transform='s/ed/EXPR/'
- comme cela a déjà été mentionné, cela a été renommé. Mais la documentation indique que cela peut prendre n'importe quelle sed
expression ou //flag
.
-x
extraire - après avoir tar
modifié notre répertoire cible et reçu nos instructions de changement de nom, nous lui demandons de commencer à extraire tous les fichiers de son -f - |pipe
fichier d’archive dans son répertoire actuel . Pas de mystère.
mc
gestionnaire de fichiers supporte très largement ce type de renommage en masse.