GNU/Linux >> Linux の 問題 >  >> Ubuntu

Bashのファイル名から名前を抽出しますか?

LastnameFirstnameYYYYMMDD.pdf形式の何千ものファイルで満たされたディレクトリがあります。姓名は常にタイトルケースになります。

これらのファイルを{姓の最初の文字}/lastname / fullfilenameのディレクトリ構造に移動できるように、姓を抽出したいと思います。例:DoeJohn20190327はD / Doe / DoeJohn20190327

に移動されます

承認された回答:

ここに解決策があります。私はそれをテストしました、あなたが説明したようにそれはフォルダを作成します。

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. シェル環境変数の設定| BASHシェル

  2. bashスクリプトが同時に実行されないようにする

  3. Bash動的(変数)変数名?

  1. Bashのファイル名拡張メカニズムから一部のファイルを除外するにはどうすればよいですか?

  2. BashスクリプトでCdを使用できないのはなぜですか?

  3. Bashスクリプト内からフルパスを取得しますか?

  1. ユーザーがルートディレクトリにアクセスできないようにする方法は?

  2. Bashスクリプトからプログラムをインストールしますか?

  3. HTML テーブルからのデータの抽出