対象読者
- Ubuntu等のデスクトップLinuxを利用している
- MP3プレイヤーとしてSONYさんのMP3 Walkmanを愛用している
ということで、少なくとも僕は得をしますが、誰が得をするのかよく分からないTipsです。ワンライナーばっかりです。1行野郎最高!
あと、
xargsコマンド初心者~初級者ぐらいの方
にも、音楽とかソニー関係なく参考になると思われます。
動作確認
「NW-E026F」では、私の使用した限りでは問題なく動作することを確認しています。あくまでも公式の使い方から外れますので、自己責任でお願いします。
まず、sonydb自体のコマンドを確認しましょう
1 2 3 4 5 6 7 8 9 10 | $ sonydb detected device /media/WALKMAN usage... songs [id] songsdel [id] songsadd [file] songschk [file] plist [id] plistdel [id] plistadd [file] |
任意のアーティスト/アルバムの曲をまとめて消す
sonydbはインストール済み、PATHの通ったところにある前提。
1 | sonydb songs | grep ${ARTIST_OR_ALBUM_NAME} | cut -d, -f1 | xargs -n1 -t sonydb songsdel |
超UNIXっぽくて素敵ですね。
解説
前提として、sonydb songsdelはパラメータを一つしか取りません。なので、xargs -n1で「一つずつ」パラメータを送ってます。
grepやcutの解説は必要ないですよね……。
よく分からないときは、xargsに-tオプションを加えると実際に発行されるコマンドが分かります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $ /opt/sonydb/bin/sonydb songs | grep PANICSMILE | cut -d, -f1 | xargs -n1 -t /opt/sonydb/bin/sonydb songsdel /opt/sonydb/bin/sonydb songsdel 0192 Writing database files: OK /opt/sonydb/bin/sonydb songsdel 0193 Writing database files: OK /opt/sonydb/bin/sonydb songsdel 0194 Writing database files: OK /opt/sonydb/bin/sonydb songsdel 0195 Writing database files: OK /opt/sonydb/bin/sonydb songsdel 0219 Writing database files: OK /opt/sonydb/bin/sonydb songsdel 0220 Writing database files: OK /opt/sonydb/bin/sonydb songsdel 0221 Writing database files: OK ... |
あるフォルダにある曲をまとめて転送
mp3のあるフォルダに入って、
1 | find . -name "*.mp3" -print0 | xargs -n1 -t -0 sonydb songsadd |
解説
ファイル一覧をxargsでひとつずつsonydb songsaddに流し込むだけです。のはずなんですが、多くの場合、曲名そのままファイル名にしたりしてますから、ファイル名には半角スペースが含まれてたりします。このままだと困るわけです。
find -print0で、各ファイルパスを、改行ではなく0文字(null文字)でつなげて出力してくれます。それを、xargsの-0オプションで再度バラします。あとは一緒ですね。
まとめ
xargs すごく便利。あと普通の音楽クラスタはコマンドラインでmp3プレイヤーの中身を管理したりしない。
参考
開発者さんの解説ページにインストール方法、普通の使い方など、色々詳しいです。
Pingback: Tweets that mention sonydbでmp3 walkmanをコマンドライン管理(feat. xargs tips) « ディスコ探偵冬景色 -- Topsy.com