GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Extraire les noms du nom de fichier dans Bash ?

J'ai un répertoire rempli de milliers de fichiers au format NomPrénomAAAAMMJJ.pdf. Le nom et le prénom seront toujours dans la casse du titre.

J'aimerais extraire le nom de famille afin de pouvoir déplacer ces fichiers vers une structure de répertoires de {première lettre du nom de famille}/nom/nom de fichier complet. Exemple :DoeJohn20190327 serait déplacé vers D/Doe/DoeJohn20190327

Réponse acceptée :

Ici vous avez une solution. Je l'ai testé et il crée les dossiers comme vous l'avez expliqué.

for filename in *.pdf
do
  echo "Processing file $filename "
  first_letter="${filename:0:1}"
  mkdir -p $first_letter #if already exists won't print error
  last_name=$(echo $filename | sed 's/\([^[:blank:]]\)\([[:upper:]]\)/\1 \2/g'  |awk '{print $1}')
  mkdir -p $first_letter/$last_name
  mv $filename $first_letter/$last_name
done

Ubuntu
  1. Exécuter les scripts Bash en entrant dans un répertoire ?

  2. Bash Dynamic (variable) Noms des variables ?

  3. Pourquoi ne puis-je pas utiliser Cd dans un script Bash ? ?

  4. Obtenir le chemin complet depuis le script Bash ?

  5. Comment empêcher les utilisateurs d'accéder au répertoire racine ?

Bash break :comment sortir d'une boucle

démarrer apachectl à partir de bash

Extraire des données d'un tableau HTML

créer un répertoire à partir du nom de fichier et déplacer bash

Bash :Aucun fichier ou répertoire de ce type ?

Comment exécuter un script bash ?