2 votes

Création d'un nom de répertoire à partir d'un nom de fichier - suppression des caractères numériques non alpha et mise en minuscules.

Je suis capable de créer un répertoire basé sur le nom d'un fichier. Je me heurte à un mur si le texte comporte des espaces ou des caractères non alphanumériques. J'aimerais supprimer ces caractères non alphanumériques et transformer ce qui reste en minuscules. Cela fera le nom du répertoire. J'ai essayé de faire quelques tests mais je ne suis même pas capable de supprimer les espaces.

Pourrais-je également me limiter à 25 caractères ?

    __FILE_NAME="Test File@#!!.txt"
    echo ${__FILE_NAME// /_}
    $ echo $__FILE_NAME | tr '[:upper:]' '[:lower:]'
    mkdir -p $__PATH${__FILE_NAME};

2voto

John1024 Points 15663

Utilisation de bash :

f="Test File@#!!.txt"
f="${f// /_}"
f="${f//[^[:alnum:].]/}"
f="${f,,?}"
mkdir -p "$__PATH$f"

Explication :

  • f="${f// /_}"

    Cela remplace tous les espaces par des soulignements. L'utilisation des guillemets est facultative. Jusqu'à ce que l'on devienne compétent dans les nombreux cas spéciaux du Shell, cependant, c'est une bonne pratique de les mettre partout où une variable est utilisée.

  • f="${f//[^[:alnum:].]/}"

    Ceci utilise une autre expansion de paramètres de bash pour supprimer tous les caractères non alphanumériques à l'exception des points. (J'ai supposé que vous pourriez vouloir les garder).

    Si vous souhaitez également supprimer les points, remplacez cette ligne par :

    `f="${f//[^[:alnum:]]/}"`
  • f="${f,,?}"

    tr est l'outil traditionnel de conversion des majuscules en minuscules. Cette ligne utilise à la place une des extensions de paramètres intégrées de bash pour effectuer la conversion.

  • mkdir -p "$__PATH$f"

    À moins que l'on veuille que le Shell traite les variables du Shell, il est plus sûr de les mettre entre guillemets.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X