LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Newbie (http://www.linuxquestions.org/questions/linux-newbie-8/)
-   -   Copy folders + included mp3's in order (http://www.linuxquestions.org/questions/linux-newbie-8/copy-folders-included-mp3s-in-order-797009/)

CQ1ST 03-22-2010 05:30 AM

Copy folders + included mp3's in order
 
Hi, I'm asking again to (hopefully this time get an answer) (man I hope watael isn't around)

a little background: I've got a stupid mp3player, that doesn't order the media numerically/alphabetically but in the order the files are found on the disk... I've found out that most operating systems don't actually order these files either: they only display them this way to the user, this means that when I copy folders to my mp3player the order is all messed up... and I don't know "any" bash syntax, only cp,mv,rm,grep|apt-get etc
I've got all the folders I want copied to my player in one directory, and all the mp3s inside numbered 01,02..10,11..21,22..

Can you please [tell bash/cat/sed?/mkdir/cp to] make folders of the same names in the player, and then copy the mp3s 'in order' to the appropriate folders?

mario.almeida 03-22-2010 06:06 AM

Hi,

Your question is not clear to me, may be someone else can help you in this.

What I understand is this

you have a file 01xyz.mp3 or 01.mp3

And you want to create a directory by name 01xyz and copy 01xyz.mp3 to 01xyz directory or create a directory by name 01 and copy 01.mp3 to 01 directory

if so then try this.

Code:

#!/bin/bash

for f in $(ls *.mp3)
do
        dirName=${f%%.*}
        mkdir $dirName
        mv $f $dirName
done


grail 03-22-2010 06:10 AM

Hi cq1st

I think I need a little further explanation?

Firstly, you do realise that the os and the file system are the ones that work out what is written where
and in what order and that it is simply the program you use for viewing things that actually displays the order
how you wish to perceive it??

Assuming you understand the above, what program are you using to view the file that you want in, i am guessing,
a numerically sorted order?

CQ1ST 03-22-2010 07:50 AM

picture this:
you have 4 folders full of mp3s
you cp them all into your mp3players music folder (and they're all jumbled!)

manually i can:
mkdir /media/disk/MUSIC/folder over and over ,then
cp 01... 02... 03... "04 - clucks sake" /media/disk/MUSIC/folder1
over and over until all 4 folders are copied just right

ls,nautilus,windows explorer,cp (you name it, the files on your computer 'are not' sitting in order)

grail 03-22-2010 08:32 AM

Ok ... I think I am catching on (I hope)
Tell me if this demo is what you are saying:

ACDC - highway_to_hell.mp3
- ride_on.mp3

Judas_Priest - ram_it_down.mp3
- johnny_b_goode.mp3

Now you cp all 4 mp3 files into mp3player_folder which looks like:

highway_to_hell.mp3
johnny_b_goode.mp3
ram_it_down.mp3
ride_on.mp3

But you would like to still be able to have them in say band order.

Am I on the right track??

w1k0 03-22-2010 08:52 AM

Try rsync command -- it sorts directories and files alphanumerically:

Code:

rsync -av /old/place /new/place

CQ1ST 03-22-2010 08:53 PM

to show you what I mean: go into an album folder and type:
ls -t
(the time each file was written) and you see str8 away they are jumbled.
now:
rsync does not actually do it but this does
(I am so glad to finally find this as it saves me alot of time)
(the sort -z may not need the r after it, not sure just did it in test folders on my computer not the st00pid mp3player)

cd /MusicToMove
find . -print0 | sort -zr | xargs -0 cp --parents
--target-directory=/media/disk/MUSIC/FoldersMoved

evo2 03-22-2010 09:20 PM

This problem exists because vfat is terrible file system.

After copying the files and *unmounting* the device, you can run fatsort on it (the device not the mount point). This command is packaged in debian under the same name, and therefore I guess it will be in Ubuntu too.

It think this may be the best solution, since it allows you to copy the files in any way you like.

Cheers,

Evo2.

CQ1ST 12-24-2014 01:42 AM

the -zr is definitely not needed (it's reverse! lol)

so it's
cd /MusicToMove
find . -print0 | sort -zh | xargs -0 cp --parents
--target-directory=/media/disk/MUSIC/FoldersMoved

(the -zh there is h for human readable alpha-numeric, it means 101-120 and the 201-220 with list perfectly)

grail 12-24-2014 12:08 PM

Sheesh .. I know you kiwis can be a bit slow at times .... but 4 years (nearly 5)??

CQ1ST 12-24-2014 02:44 PM

Bah Humbug! Sheesh you subscribed to this!?

it would be a whole lot more interesting if someone from a distro team or two were here saying "You know what we would be stupid not to add this simple functionality into every Linux distro out of the box from now (5 years ago?) on"

dugan 12-24-2014 02:59 PM

It's not too late to correct post #2 for other people who might find this thread:

Code:

#!/bin/bash

for f in *.mp3
do
        dirName="$(dirname $f)"
        mkdir "$dirName"
        mv -- "$f" "$dirName"
done

This is much more robust.

See:

http://mywiki.wooledge.org/BashPitfa...8ls_.2A.mp3.29


All times are GMT -5. The time now is 10:22 AM.