Skip to Content
bash Cookbook
book

bash Cookbook

by Carl Albing, JP Vossen, Cameron Newham
May 2007
Beginner
628 pages
15h 46m
English
O'Reilly Media, Inc.
Content preview from bash Cookbook

Loading Your MP3 Player

Problem

You have a collection of MP3 files that you would like to put in your MP3 player. But you have more music than can fit on your MP3 player. How can you load your player with music without having to baby-sit it by dragging and dropping files until it is full?

Solution

Use a shell script to keep track of the available space as it copies files onto the MP3 player, quitting when it is full.

 1 #!/usr/bin/env bash 2 # cookbook filename: load_mp3 3 # Fill up my mp3 player with as many songs as will fit. 4 # N.B.: This assumes that the mp3 player is mounted on /media/mp3 5 # 6 7 # 8 # determine the size of a file 9 # 10 function FILESIZE () 11 { 12 FN=${1:-/dev/null} 13 if [[ -e $FN ]] 14 then 15 # FZ=$(ls -s $FN | cut -d ' ' -f 1) 16 set -- $(ls -s "$FN") 17 FZ=$1 18 fi 19 } 20 21 # 22 # compute the freespace on the mp3 player 23 # 24 function FREESPACE 25 { 26 # FREE=$(df /media/mp3 | awk '/^\/dev/ {print $4}') 27 set -- $(df /media/mp3 | grep '^/dev/') 28 FREE=$4 29 } 30 31 # subtract the (given) filesize from the (global) freespace 32 function REDUCE () 33 (( FREE-=${1:-0})) 34 35 # 36 # main: 37 # 38 let SUM=0 39 let COUNT=0 40 export FZ 41 export FREE 42 FREESPACE 43 find . -name '*.mp3' -print | \ 44 (while read PATHNM 45 do 46 FILESIZE "$PATHNM" 47 if ((FZ <= FREE)) 48 then 49 echo loading $PATHNM 50 cp "$PATHNM" /media/mp3 51 if (( $? == 0 )) 52 then 53 let SUM+=FZ 54 let COUNT++ 55 REDUCE $FZ 56 else 57 echo "bad copy of $PATHNM to /media/mp3" 58 rm ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

bash Cookbook, 2nd Edition

bash Cookbook, 2nd Edition

Carl Albing, JP Vossen
Linux Shell Scripting Cookbook - Third Edition

Linux Shell Scripting Cookbook - Third Edition

Clif Flynt, Sarath Lakshman, Shantanu Tushar

Publisher Resources

ISBN: 0596526784Errata Page