====== Plaintext ====== ===== My Use ===== I mostly use [[mpd]] for playing digital music. This means the playlists are in a plaintext format (m3u), which I find really handy as I can easily modify them. Some examples: Search playlists for a term, for example a song or artist name. grep -r -n -i [term] . Replace term in playlists. For example if I move a directory or change a filename. You have to escape more non alphanumeric characters with a ''\'', common ones being ''/'', ''['', '']'', ''('', '')''. You can replace the asterisk with a specific file if you want. I'm using a pound symbol instead of the deaful ''/'' to make this a little less of a hassle. sed -i 's#[find]#[replace]#g' * I have a convoluted [[bash]] script to convert the paths in playlists formatted to work with [[mpd]] to ones that will works with, say, [[vlc]]. But hey, I learnt how to add arguments and do if/then statements in Bash so I'm very happy it works. (still have to add logging and show diff options) #!/bin/bash # Converts .M3U playlists generated in MPD into # ones usable outside MPD—in VLC, for example—by # prepending information to the paths. # options: # -f Convert single playlist, provide filename with extension. # By default it will convert all .M3U files in mpd directory # -a Convert to absolute paths (in /home/[user]/Music/Playlists/path_absolute) # -r Convert to relative paths (in /home/[user]/Music/Playlists) dir=true abs=false rel=false while getopts :f:ard flag do case $flag in f) file=${OPTARG} dir=false ;; a) abs=true ;; r) rel=true ;; esac done if [ "$dir" = true ] then if [ "$abs" = true ] && [ "$rel" = false ] then for pl in /home/[user]/Music/Playlists/mpd/*.m3u do sed -e "s#^#/home/[user]/Music/#" "$pl" > "/home/[user]/Music/Playlists/path_absolute/${pl##*/}" done echo "Converted directory using absolute paths" elif [ "$rel" = true ] && [ "$abs" = false ] then for pl in /home/[user]/Music/Playlists/mpd/*.m3u do sed -e "s#^#../#" "$pl" > "/home/[user]/Music/Playlists/${pl##*/}" done echo "Converted directory using relative paths" elif [ "$abs" = true ] && [ "$rel" = true ] then for pl in /home/[user]/Music/Playlists/mpd/*.m3u do sed -e "s#^#/home/[user]/Music/#" "$pl" > "/home/[user]/Music/Playlists/path_absolute/${pl##*/}" && sed -e "s#^#../#" "$pl" > "/home/[user]/Music/Playlists/${pl##*/}" done echo "Converted directory using absolute and relative paths" fi elif [ "$dir" = false ] then if [ "$abs" = true ] && [ "$rel" = false ] then sed -e "s#^#/home/[user]/Music/#" "/home/[user]/Music/Playlists/mpd/$file.m3u" > "/home/[user]/Playlists/path_absolute/$file.m3u" echo "Converted single file using absolute paths" elif [ "$rel" = true ] && [ "$abs" = false ] then sed -e "s#^#../#" "/home/[user]/Music/Playlists/mpd/$file.m3u" > "/home/[user]/Music/Playlists/$file.m3u" echo "Converted single file using relative paths" elif [ "$abs" = true ] && [ "$rel" = true ] then sed -e "s#^#/home/[user]/Music/#" "/home/[user]/Music/Playlists/mpd/$file.m3u" > "/home/[user]/Playlists/path_absolute/$file.m3u" && sed -e "s#^#../#" "/home/[user]/Music/Playlists/mpd/$file.m3u" > "/home/[user]/Music/Playlists/$file.m3u" echo "Converted single file using absolute and relative paths" fi fi ===== Metaforms ===== ===== Tools ===== ==== Grep ==== ===== See Also ===== {{tag>form text}}