Je sais comment enlever l'extension d'un fichier, quand je le connais comme :
nameis=$(basename $dataset .csv)
mais je veux supprimer toute extension sans la connaître à l'avance, quelqu'un sait comment faire ?
Toute aide est appréciée, Ted
Je sais comment enlever l'extension d'un fichier, quand je le connais comme :
nameis=$(basename $dataset .csv)
mais je veux supprimer toute extension sans la connaître à l'avance, quelqu'un sait comment faire ?
Toute aide est appréciée, Ted
En bash, vous pouvez faire ce qui suit :
nameis=${dataset%.*}
... par exemple :
$ dataset=foo.txt
$ nameis=${dataset%.*}
$ echo $nameis
foo
Cette syntaxe est décrite dans la page de manuel de bash comme :
${paramètre%mot}
${paramètre%%mot}
Supprime le motif de suffixe correspondant. Le mot est développé pour produire un motif comme dans l'expansion de nom de chemin. Si le motif correspond à une partie arrière de la valeur développée du paramètre, le résultat de l'expansion est la valeur développée du paramètre avec le motif le plus court (le cas "%") ou le motif le plus long (le cas "%%") supprimé. Si le paramètre est @ ou *, l'opération de suppression de motif est appliquée à chaque paramètre positionnel tour à tour, et le développement est la liste résultante. Si le paramètre est une variable de tableau souscrite avec @ ou *, l'opération de suppression de motif est appliquée à chaque membre du tableau tour à tour, et le développement est la liste résultante.
Maintenant, si vous voulez du style old-school regexp :
echo "foo.bar.tar.gz" | sed "s/^\(.*\)\..*$/\1/"
-> Shall return : foo.bar.tar
I will break it down:
s/ Substitute
^ From the beginning
\\( Mark
.\* Everything (greedy way)
\\) Stop Marking (the string marked goes to buffer 1)
\\. until a "." (which will be the last dot, because of the greedy selection)
.\* select everything (this is the extension that will be discarded)
$ until the end
/ With (substitute)
\\1 The buffer 1 marked above (which is the filename before the last dot(.)
/ End
Cristiano Savino
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.