Avec des noms de fichiers comme ceux-ci :
/the/path/foo.txt
bar.txt
J'espère obtenir :
foo
bar
Pourquoi ça ne marche pas ?
#!/bin/bash
fullfile=$1
fname=$(basename $fullfile)
fbname=${fname%.*}
echo $fbname
Quelle est la bonne façon de procéder ?
1 votes
Ce code devrait fonctionner dans la plupart des cas tant que la valeur de
$1
est en fait ce que vous pensez qu'il est. Cependant, elle est sujette à division des mots y expansion du nom de fichier en raison d'une mauvaise en citant .0 votes
Closer @tripleee : ce n'est pas un doublon de Extraire le nom de fichier et l'extension en Bash . L'autre Q plus complexe exige que l'extension et le nom de fichier soient séparé . En fait, l'autre question est une élaboration de cette question plus fondamentale.
0 votes
@agc Les réponses semblent très similaires, mais la question la plus ancienne en comporte davantage. Pouvez-vous expliquer pourquoi vous pensez qu'elles devraient être séparées ?
0 votes
Les utilisateurs intéressés par le problème le plus simple pourraient être inutilement déroutés par le code supplémentaire ou différent nécessaire pour résoudre le problème plus complexe.
0 votes
Avez-vous lu les réponses à l'autre question ? Sur les cinq premières, quatre démontrent très clairement comment faire exactement cela, et expliquent les options, la plupart d'entre elles de manière très succincte. Je serais heureux d'être convaincu si vous pouviez montrer des différences réelles, mais je ne les vois pas. Vous pourriez peut-être soulever cette question sur Méta Stack Overflow pour une plus grande visibilité.
0 votes
Essayez cette phrase :
fname=$(basename "${1%.*}")