[C] renommer un fichier
Bonjour à tous!
Je veux faire un programme de renommage automatique de fichiers en C sur linux:
Questions surement idiotes:
- Comment renommer un fichier sans le copier?
- Est ce que ce renommage permet un "déplacement"?
- Comment m'y prendre pour trouver tout seul ce genre de fonctionnalités lorsqu'elles ont déjà été implémentés?(pas trop de docs contrairement à java...)
Merci!
A+
Je veux faire un programme de renommage automatique de fichiers en C sur linux:
Questions surement idiotes:
- Comment renommer un fichier sans le copier?
- Est ce que ce renommage permet un "déplacement"?
- Comment m'y prendre pour trouver tout seul ce genre de fonctionnalités lorsqu'elles ont déjà été implémentés?(pas trop de docs contrairement à java...)
Merci!
A+
A voir également:
- [C] renommer un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Renommer fichier en masse - Guide
- Fichier rar - Guide
8 réponses
Renommer = Déplacer si le fichier reste sur le même device
Pour renommer/déplacer un fichier le plus simple c'est de le faire directement dans une console shell :
Le C te permet de d'appeler une fonction shell facilement. Tape dans google ou dans une console :
pour voir comment ça marche.
Bon évidemment c'est pas top car ton programme ne pourra marcher que sous linux mais bon... Au fait pourquoi veux tu faire ça en C car ce n'est pas le langage le plus adapté, par exemple comparé à du bash.
Bonne chance
Pour renommer/déplacer un fichier le plus simple c'est de le faire directement dans une console shell :
mv ancien_nom nouveau_nom
Le C te permet de d'appeler une fonction shell facilement. Tape dans google ou dans une console :
man execvp man popen
pour voir comment ça marche.
Bon évidemment c'est pas top car ton programme ne pourra marcher que sous linux mais bon... Au fait pourquoi veux tu faire ça en C car ce n'est pas le langage le plus adapté, par exemple comparé à du bash.
Bonne chance
Je veux faire ca en C car le nom du fichier se construit à partir de données à l'intérieur de celui ci (TAG d'un mp3) et je ne sais pas lire précisément un fichier en bash (et je ne sais meme pas si c'est possible)
J'ai effectivement pensé à l'appel de mv avec exec mais je voudrais vraiment savoir comment on peut le faire au niveau systeme!
J'ai effectivement pensé à l'appel de mv avec exec mais je voudrais vraiment savoir comment on peut le faire au niveau systeme!
il existe une fonction rename() en C
int rename (const char*, const char*);
dans "stdio.h"
Si tu veux savoir comment elle est faite, regarde les sources des lib de gcc.
sinon, pour trouver les fonctions quand tu ne les connait pas, il y a deux solutions :
au pif dans le man (man -k rename, man -k move)
ou sur quelques site
https://en.cppreference.com/w/
où d'ailleur la fonction rename est lister (dans "All C functions")
int rename (const char*, const char*);
dans "stdio.h"
Si tu veux savoir comment elle est faite, regarde les sources des lib de gcc.
sinon, pour trouver les fonctions quand tu ne les connait pas, il y a deux solutions :
au pif dans le man (man -k rename, man -k move)
ou sur quelques site
https://en.cppreference.com/w/
où d'ailleur la fonction rename est lister (dans "All C functions")
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est super!
Merci beaucoup!
Mais je ne suis pas convaincu par le man -k.
Par exemple, je cherchais une fonction pour savoir si un fichier est un répertoire et ben j'ai pas trouvé ni dans man -k ni dans cppreference, au final j'ai trouvé dans le code source de la commande mv: lstat!
Merci beaucoup!
Mais je ne suis pas convaincu par le man -k.
Par exemple, je cherchais une fonction pour savoir si un fichier est un répertoire et ben j'ai pas trouvé ni dans man -k ni dans cppreference, au final j'ai trouvé dans le code source de la commande mv: lstat!
man mv man ls
Mais il y a une fonction en C pour tester si un fichier est un répertoire... Je ne me souviens plus du nom par contre.
Bonne chance
j'ai pas dit que c'était infaillible le "man -k" mais ça peut aider à trouver une fonction quand on sait ce qu'elle fait. (si la fonction existe)
sinon, quand tu ouvre ton flux de fichier, tu as un FILE*
Ceci est une structure. N'y aurait-il pas un des membre de cette struct qui dirait si c'est un fichier ou non?
sinon, quand tu ouvre ton flux de fichier, tu as un FILE*
Ceci est une structure. N'y aurait-il pas un des membre de cette struct qui dirait si c'est un fichier ou non?