Pages : 1
#1 Le 16/02/2007, à 06:00
- Compte anonymisé
Programme pour renommage
Bonjour,
Voilà, avec un ami nous avons remarqué que peu de programmes avec un lot d'options existaient pour renommer des fichiers par lot sous linux. Donc on s'est mis en tête d'en créer un. Mais nous avons besoin de vous pour des améliorations et de vos conseils. Je vous invite à aller sur le site de l'auteur pour voir son travail et si possible de l'aider par vos idées en vue de l'améliorer.
http://linuxvsmacosx.googlepages.com/
Merci par avance de vos aides.
Bye.
Dernière modification par Compte anonymisé (Le 16/02/2007, à 06:04)
#2 Le 16/02/2007, à 11:22
- l'autre
Re : Programme pour renommage
euh, comment on le teste? Edit: ok, c'est là
Pour l'instant, j'utilise thunar --bulk-rename qui marche pas mal (paquet thunar). ça peut peut-être vous donner des pistes pour votre code. Il y a aussi krename je crois, mais c'est du qt
Dernière modification par l'autre (Le 16/02/2007, à 12:23)
Si tu donnes à quelqu'un un poisson que tu as volé, il mangera une fois. Si tu lui apprends à voler, il mangera toute sa vie
Hors ligne
#3 Le 16/02/2007, à 12:02
- mesmento
Re : Programme pour renommage
Krename est très très complet dans ce domaine.
Cela dit, le projet à l'air intéressant !
Je vais jeter un œil aux sources
Hors ligne
#4 Le 16/02/2007, à 12:23
- aleph
Re : Programme pour renommage
> golgot200
Voilà, avec un ami nous avons remarqué que peu de programmes avec un lot d'options existaient pour renommer des fichiers par lot sous linux....
---
En fait, il y a une certaine logique à ce manque. Un administrateur ou programmeur expérimenté trouvera son bonheur avec probablement bash ou à coup sur Python. Par ex., Python propose un module de filtrage de noms de fichiers, fnmatch qui accomplit la partie la plus délicate du travail.
Que cette remarque ne t'ote cependant pas le plaisir de créer ton application.
#5 Le 16/02/2007, à 12:28
- Henry de Monfreid
Re : Programme pour renommage
Un petit script nommé upper2low se trouve ici.
Cela vous inspirera peut etre.
« Je te hais plus qu'aucun des dieux qui vivent sur l'Olympe
Car tu ne rêves que discordes, guerres et combats. »
Trouble obsessionnelcompulsif
Le TdCT est revenu (ils reviennent tous)
Hors ligne
#6 Le 16/02/2007, à 12:32
- l'autre
Re : Programme pour renommage
j'obtiens
Segmentation fault (core dumped)
au lancement de l'exécutable
Si tu donnes à quelqu'un un poisson que tu as volé, il mangera une fois. Si tu lui apprends à voler, il mangera toute sa vie
Hors ligne
#7 Le 16/02/2007, à 16:54
- sylvaing01
Re : Programme pour renommage
Bonjour tout le monde, j'écrit Renfile avec Golgot200, bon pour ceux qui on regardé dans le code source ils ont remarqués que je débute en programmation donc faites gaffe pour l'instant, ne l'utilisez pas sur des fichiers sans faire de copie. Je m'emploie actuellement à intégrer la copie dans le programme justement pour éviter ces accidents, mais c'est pas facile. Alors soyez patient.
Autre chose: je l'ai appelé Renfile, mais çà existe déjà, si quelqu'un a une idée de nom original çà serait pas mal, j'ai pas d'idée.
Hors ligne
#8 Le 16/02/2007, à 17:29
- sylvaing01
Re : Programme pour renommage
Code:
Segmentation fault (core dumped)
l'autre, je trouve çà étrange, tu le lance comment?
mais j'ai rectifié plusieurs bugs depuis cette version
aleph, tu a raison, mais on a décidé d'écrit un programme en C parce que les scripts, c'est trop long, surtout lorsqu'il y a beaucoup de fichiers à renommer ou sur des vieux PC, nous on voudrait quelque chose de rapide, parce que renommer des fichiers c'est pas lancer un encodage vidéo, ou un rendu 3D, çà doit être instantanné ou tout au moins très rapide.
Pour pinballyoda, je te répondrai la même chose, dans ce script il y a 2 commandes tr et 5 sed, un programme en C est quand même significativement plus rapide.
En tout cas merci pour le lien
Hors ligne
#9 Le 19/02/2007, à 01:30
- kaworu
Re : Programme pour renommage
Pour pinballyoda, je te répondrai la même chose, dans ce script il y a 2 commandes tr et 5 sed, un programme en C est quand même significativement plus rapide.
En tout cas merci pour le lien
Ce qui doit être lent c'est plutôt le disque dur et le FileSystem sur un petit PC. C'est pas vraiment sed/grep qui demande bcp de ressources.
"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."
Hors ligne
#10 Le 19/02/2007, à 17:38
- sylvaing01
Re : Programme pour renommage
kaworu, tu a raison, les accès disques sont assez lents, mais 5 commandes sed de suite peut prendre plusieurs ms a ajouter au temps de la commande "rename" ou "mv"(accès au disque), sur plusieurs centaines voir plusieurs milliers de fichiers à renommer, çà se ressent. En tout cas, après test sur quelques dizaines de fichiers, Renfile renomme quasi instantanément, alors qu'un script met près d'une dizaine de secondes.
Cela dit, çà dépend évidemment de la machine.
Hors ligne
#11 Le 23/02/2007, à 19:50
- sylvaing01
Re : Programme pour renommage
une petite question :
précision: c'est mon premier programme en C (mis à part les printf("hello world"); du bouquin), alors j'ai du mal, surtout avec les pointeurs (l'assembleur est quand même 100 fois plus simple là dessus)
Donc,j'ouvre un dossier:
sousdossier = opendir(name);
plus loin j'alloue un tableau avec realloc:
tabsubf=realloc(tabsubf, (size_t) taille);
et je sauvegarde le pointeur:
*(int *)tabsubf= (int)sousdossier;
et quand je veut récupérer mon pointeur:
sousdossier=*(int *)tabsubf //edit: c'est sur cette ligne qu'est l'erreur
çà fonctionne très bien, sauf que à la compile j'ai une erreur:
warning: assignment makes pointer from integer without a cast
quelqu'un pourrait me dire comment faire pour que j'ai pas cette erreur.
Je précise que çà compile quand même et que çà fonctionne très bien.
J'ai essayé pas mal de truc, mais pas moyen, quelqu'un aurait il une solution?:|
Dernière modification par sylvaing01 (Le 23/02/2007, à 19:52)
Hors ligne
#12 Le 23/02/2007, à 22:56
- any
Re : Programme pour renommage
warning: assignment makes pointer from integer without a cast
c'est pas une erreur au sens strict , c'est un warning comme ca l'indique .
parcque tu assigne un pointer a un entier dans ton code sans caster.
tu peux le resoudre par l'option de compilation -Wno-
mais ce n'est pas une bonne idee lol , ca permute sur off les warnings
http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
sinon plus serieusement (mais sans trop voir le code et les declarations)
je dirais que c'est surement du au fait que sousdossier est du type DIR* et non *(int *).
donc pour sousdossier=*(int *)tabsubf;
je verais plus sousdossier =(DIR *)tabsubf ;
#13 Le 23/02/2007, à 23:08
- sylvaing01
Re : Programme pour renommage
Merci Any, encore une fois tu me sauve la mise!
En fait j'avait bien fait çà au début, mais j'avais plein d'erreurs, donc j'avait changé et essayé plein d'autres trucs. Jusqu'à ce que je trouve sur un forum qu'il fallait rajouter #include <malloc.h> pour plus avoir d'erreurs avec realloc et quelques autres erreurs liées.
En tout cas merci, c'est niquel!
Hors ligne
#14 Le 23/02/2007, à 23:14
- sylvaing01
Re : Programme pour renommage
ah non! mince çà marche plus! pourtant j'ai bien déclaré DIR *sousdossier
bizarre:/
Hors ligne
#15 Le 24/02/2007, à 01:29
- any
Re : Programme pour renommage
ben je connais pas ton programme et je sais pas ce qu'il fait ,
mais tu devrais regarder des exemples avec les fonctions de dirent et sys/stat
http://linux.about.com/library/cmd/blcmdl3_opendir.htm
http://linux.about.com/library/cmd/blcmdl2_stat.htm
http://www.commentcamarche.net/forum/affich-1699952-langage-c-recuperer-un-dir
#include <unistd.h>
#include <stdio.h>
#include <dirent.h>
#include <string.h>
#include <sys/stat.h>
void printdir(char *dir, int depth)
{
DIR *dp;
struct dirent *entry;
struct stat statbuf;
if((dp = opendir(dir)) == NULL) {
fprintf(stderr,"cannot open directory: %s\n", dir);
return;
}
chdir(dir);
while((entry = readdir(dp)) != NULL) {
lstat(entry->d_name,&statbuf);
if(S_ISDIR(statbuf.st_mode)) {
/* Found a directory, but ignore . and .. */
if(strcmp(".",entry->d_name) == 0 ||
strcmp("..",entry->d_name) == 0)
continue;
printf("%*s%s/\n",depth,"",entry->d_name);
/* Recurse at a new indent level */
printdir(entry->d_name,depth+4);
}
else printf("%*s%s\n",depth,"",entry->d_name);
}
chdir("..");
closedir(dp);
}
#16 Le 24/02/2007, à 22:11
- sylvaing01
Re : Programme pour renommage
Merci pour les liens Any, je regarde. Pour ce qui est de mon programme, en fait je veut qu'il parcour tous les sous dossiers d'un dossier spécifié dans la ligne de commande. çà fait 15 jours que je me casse les dents dessus! mais bon j'espère que d'ici la semaine prochaine çà fonctionne, je mettrait évidemment les sources sur mon site.
En fait je veut que le programme renfile, copie des fichiers et renomme ces copies, pas très utile, juste que çà permet de pas faire de bêtise en testant le programme... mais pour un nul dans mon genre, j'avoue que c'est un peu trop dur pour moi.
Enfin bon courage...
Hors ligne
Pages : 1