2017-07-27 3 views
0

J'ai beaucoup de fichiers numérotés ordonnés (001 ~ 099) contenant le même fichier appelé "rouge". Tous ces fichiers sont dans un répertoire. Je veux copier tous les fichiers "rouges" dans un dossier (global) et chaque fichier "rouge" je me déplace je veux le renommer par son dossier parent, par exemple. 001, 002..etc ..Je voudrais copier coller un fichier, puis le renommer, comment puis-je le faire dans mon cas?

Je sais que comment copier déplacer et renommer, mais je ne sais pas comment les mettre ensemble

Alors je l'ai fait

cp ~/00 */rouge ~/global mv rouge 001

Je veux en faire une boucle et ajouter +1 001 chaque fois qu'un fichier est ajouté, mais je

échoué

peut-elle aider quelqu'un s'il vous plaît?

Répondre

1
for i in {1..99} 
do 
    number=$(printf "%03d" $i) 

    cp ~/$number/red ~/global/$number 
done 

Dans bash >=bash-4 cela pourrait fonctionner aussi bien:

for number in {001..099} 
do 
    cp ~/$number/red ~/global/$number 
done 
+0

Merci beaucoup, mal essayer! – tsumaranaina

1

Ce script bash devrait faire ce que vous avez décrit:

for i in {1..99} 
do 
    NUMBER="$(printf "%03d" $i)" 
    cp ~/$NUMBER/red ~/global/$NUMBER 
done 

Dans chaque itération de la boucle, la variable $ NUMBER reçoit la sortie de la commande printf (qui imprime la valeur de i, formatée avec le remplissage 0 approprié au début). Alors $ NOMBRE est utilisé pour spécifier les noms de répertoire de 001 à 099.

EDIT: oups, on dirait que Stefan me devança

+0

Merci pour votre aide! – tsumaranaina