GNU/Linux >> Belajar Linux >  >> Ubuntu

Mengekstrak Nama Dari Nama File Di Bash?

Saya memiliki direktori yang berisi ribuan file dalam format LastnameFirstnameYYYYMMDD.pdf. Nama belakang dan nama depan akan selalu ada dalam huruf besar/kecil.

Saya ingin mengekstrak nama belakang sehingga saya dapat memindahkan file-file ini ke struktur direktori {first letter of last name}/lastname/full filename. Contoh:DoeJohn20190327 akan dipindahkan ke D/Doe/DoeJohn20190327

Jawaban yang Diterima:

Di sini Anda punya solusi. Saya mengujinya dan membuat folder seperti yang Anda jelaskan.

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. Mengatur Variabel Lingkungan Shell | Kulit BASH

  2. Mencegah skrip bash berjalan secara bersamaan

  3. Nama Variabel Bash Dinamis (variabel)?

  1. Bagaimana Cara Mengecualikan Beberapa File Dari Mekanisme Perluasan Nama File Di Bash?

  2. Mengapa Saya Tidak Dapat Menggunakan Cd Dalam Skrip Bash??

  3. Bagaimana Mencegah Pengguna Mengakses Direktori Root?

  1. Menginstal Program Dari Script Bash?

  2. memulai apachectl dari bash

  3. Mengekstraksi data dari tabel HTML