0

私は読んだことがありますが、これについて頭を包むことができないようです。flac で作成したリッピング ファイルを mp3 プレーヤー用の mp3 に変換しています。ただし、このセットは 2 枚の CD からのものであるため、番号のプレフィックスは望ましくありません。

ファイル名の例:

01 Foo 9.flac
02 Foo 10.flac
03 Foo 11.flac
04 Foo 12.flac
05 Foo 13.flac
25 Foo 1.flac
26 Foo 2.flac
...

これが私がこれまでに持っているものです

$for file in *Foo*.flac; do flac -cd "$file" | lame -q 0 -V0 - "/media/mp3player/speech/${file%.flac}.mp3"; done

数字とスペースの接頭辞を削除し、理想的には末尾の数字に対応するものに置き換えるにはどうすればよいですか?

したがって、正しい方向へのステップは
From: 25 Foo 1
To: Foo 1 になります。

しかし、これは理想的
です From: 25 Foo 1
To: 1 Foo 1

Bash Reference Manual の Shell Parameter Expansion セクションを読みましたが、例がなくて苦労しています。いじり続けますが、誰かが洞察を持っているかどうかを確認するために投稿したかったのです。

4

2 に答える 2

1

おそらくより良いバージョンがありますが、これはうまくいくはずです:

for file in *Foo*.flac
do
  n=${file#*Foo} # erase from filename Foo and preceding characters
  n=${n%.flac}   # get file index
  fileout=${n}${file#[0-9]?}.mp3  #this works as long as you have two digits numbers only
  flac -cd "$file" | lame -q 0 -V0 - "/media/mp3player/speech/${fileout}.mp3"
done
于 2013-02-05T13:57:12.770 に答える
0
awk '{old=$0;a=$NF;gsub(".flac","",a);$1=a;new=$0;system("mv \""old"\" \""new"\"");}'

以下でテスト:

> ls -1 01*
01 Foo 25.flac
01 Foo 26.flac
01 Foo 9.flac

> ls -1 01*| awk '{old=$0;a=$NF;gsub(".flac","",a);$1=a;new=$0;system("mv \""old"\" \""new"\"");}'

> ls -1 *.flac
25 Foo 25.flac
26 Foo 26.flac
9 Foo 9.flac
> 
于 2013-02-05T14:18:09.187 に答える