GNU/Linux >> Znalost Linux >  >> Ubuntu

Extrahování jmen z názvu souboru v Bash?

Mám adresář plný tisíců souborů ve formátu PříjmeníJménoRRRRMMDD.pdf. Příjmení a jméno budou vždy velkými písmeny.

Chtěl bych extrahovat příjmení, abych mohl tyto soubory přesunout do adresářové struktury {first letter of last name}/lastname/full filename. Příklad:DoeJohn20190327 by se přesunul do D/Doe/DoeJohn20190327

Přijatá odpověď:

Tady máte řešení. Testoval jsem to a vytváří složky, jak jste vysvětlili.

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. Nastavení proměnných prostředí prostředí | BASH Shell

  2. Zabránění souběžnému spuštění bash skriptu

  3. Jak vyloučit některé soubory z mechanismu rozšíření názvu souboru v Bash?

  1. Získat úplnou cestu ze skriptu Bash?

  2. jak ar x název_souboru.a do jiného adresáře

  3. Jak spustit bash skript?

  1. Spouštět Bash skripty při vstupu do adresáře?

  2. Bash Dynamické (proměnné) názvy proměnných?

  3. Proč nemohu použít CD ve skriptu Bash?