On Feb 19, 2005, at 9:12 AM, Eric "Shubes" wrote:
> Nathan England wrote:
>> On Friday 18 February 2005 10:25, Eric "Shubes" wrote:
>>> Mike Hoy wrote:
>>>
>>> find music/ -name '*.mp3' -exec mplayer -shuffle {} \;
>>>
>>> Note, you probably want to add the full path to your music/
>>> directory.
>> This would tell mplayer to shuffle the 1 song it sent, right?
>
> Bsst. Wrong.
You sure about that? Because according to the man page for find, "If
the string ``{}'' appears anywhere in the utility name or the arguments
it is replaced by the pathname _of the current file_" (emphasis added,
gleaned from the MacOS X Panther "man find", but also found in Debian's
man page around line 262).
So according to this, what find will do is essentially the same thing
that a "for i in $LIST; do $COMMAND; done" would do, and that is call
"mplayer -shuffle $i" for every file that is found, with one on each
command. Essentially it would be equivalent to doing this:
foo@bar:~$ mplayer -shuffle $file1
foo@bar:~$ mplayer -shuffle $file2
foo@bar:~$ mplayer -shuffle $file3
(...ad infinitum...)
To pass the _entire_ list to mplayer as a -shuffle argument list
instead, do it like this:
foo@bar:~$ mplayer -shuffle $(find music/ -name '*.mp3')
A good way to illustrate this is to instead pass the arguments to the
printf command. If we call printf like this:
foo@bar:~$ printf "%s\n" $(find music/ -name '*.mp3')
You'll notice that all of the filenames that find finds are printed
right next to each other, separated by a space. If we do it like this,
however:
foo@bar:~$ find music/ -name '*.mp3' -exec printf "%s" '{}' ';'
Each filename is printed on a separate line, because of the same effect
mentioned above. What we want is to pass the entire results of the
search to mplayer, so we should use the $(find ...) form instead of the
find -exec form.
HTH =o)
--
June Tate *
http://www.theonelab.com *
june@theonelab.com
---------------------------------------------------
PLUG-discuss mailing list -
PLUG-discuss@lists.plug.phoenix.az.us
To subscribe, unsubscribe, or to change you mail settings:
http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss