次の録音ディレクトリがあります。
foo - bar-202009.opus
unix - tilde-2020se.opus
stack - exchange-29328f.opus
ファイル名でメタ設定を試みましたfoo - bar.202009.opus
(いくつかの不一致があり、簡単な方法は破棄されました-<6digitchars>.opus
)。
song title = foo - bar
スクラップにはsedを使用してください。
$ ls | sed 's/-[a-zA-Z0-9]*\w//g; s/.opus//g'
foo - bar
unix - tilde
stack - exchange
私はそれを設定するためにid3tagを使用します、synatx
id3tag --song=[tilte] [file]
私はこれらすべてをディレクトリに持っているので、while&readで繰り返します。
ls | while read x; \
do id3tag \
$(echo \
--song=\"$(echo $x | sed 's/-[a-zA-Z0-9]*\w//g; s/.opus//g')\" \
\"${x}\"
); \
done
上記の問題は、入力ファイルの空白のためにid3が別のファイルとして解釈されることです(角括弧を使用しても\"${x}\"
)。
これで出力は次のようになります。
foo
'bar"'
'"bar-202009.opus"'
.
.
i3dtagに空白のあるファイルを単一のファイルとして処理させる方法はありますか?
ベストアンサー1
ls
1行で解析を避けてください。
#!/bin/sh
for file in *; do
scrap="$(echo $file | sed 's/-[a-zA-Z0-9]*\w//g; s/.opus//g')"
id3tag --song="${scrap}" "${f}"
done