2011-08-31 7 views
0

Quelqu'un peut-il me dire une commande qui peut renommer tous les fichiers sous un répertoire qui sont de la forme test.c en test.cc sans utiliser de tuyauterie et de redirection.un script de shell shell

J'ai écrit un script shell qui contient une boucle et fait le même travail:

for i in *.c;
do
mv $i ${i%c}cc
done

+1

'pour i dans * .c; fais mv $ i $ {i% c} cc; fait? – jweyrich

Répondre

5
find dirname -iname "*.c" -exec mv "{}" "{}"c \; 
+0

pouvez-vous s'il vous plaît me dire comment utiliser le script ci-dessus pour convertir un fichier * .cc en fichier * .c – pradeepchhetri

+0

Succinctement, vous ne pouvez pas. L'alternative 'renommer .cc .c * .cc' est facile (si vous avez' renommer 'sur le système). –

+0

Vous pouvez faire: 'trouver x -iname" * .cc "-exec mv" {} "\' basename "{}" \ '.c \;' mais la solution de renommer est * BEAUCOUP * meilleure. –

3

Quel est le problème avec:

for i in *.c; do mv $i ${i%c}cc; done 

Il est une ligne - même pas très longue ...

Sinon, sur Linux, il y a une commande rename:

rename .c .cc *.c