Turning my lists into useable copy commands

Hello everyone! I currently work in the motion picture industry and we constantly receive lists of missing media from our sound department. I use a series of commands in TextWrangler in order to remake the lists into useable copy commands to automate the whole process but if I could make this work with one grep command or in some other fashion that would be amazing. Forgive me because my coding skills go about as far as googling what I need and testing things till they work.

Here is an example of a list we get from the sound department:

WA6016_03.A01.D114D54EF9A91.wav    CX_Media_06:OMFI MediaFiles:zCassie:
FRK6030_04A01.D11A054F4C480.wav    CX_Media_06:OMFI MediaFiles:zCassie:
FRK6029_03A01.D11A054F4C47D.wav    CX_Media_06:OMFI MediaFiles:zCassie:
FRK6031_02A01.D11A054F4C481.wav    CX_Media_06:OMFI MediaFiles:zCassie:
FRK6032_06A01.D11A054F4C486.wav    CX_Media_06:OMFI MediaFiles:zCassie:
FRK6032_04A01.D11A054F4C485.wav    CX_Media_06:OMFI MediaFiles:zCassie:
FRK6028_02A01.D11A054F4C47B.wav    CX_Media_06:OMFI MediaFiles:zCassie:
FRK6027_03A01.D11A054F4C47A.wav    CX_Media_06:OMFI MediaFiles:zCassie:
VI6006_01.A01.D114D54EF9A85.wav    CX_Media_06:OMFI MediaFiles:zCassie:
R6v0307,Audio Mixdo54FC00E1.wav    CX_Jeff_Render_01:OMFI MediaFiles:zJeff_AP:
Bass_Drop_A01.D10BF54E6B931.wav    CX_Media_06:OMFI MediaFiles:zTommy_AP:
Bass_Drop_A02.D10BF54E6B931.wav    CX_Media_06:OMFI MediaFiles:zTommy_AP:
R6v0225_BTA01.D118C54F38E42.wav    CX_Media_06:OMFI MediaFiles:zCassie:
R6v0225_BTA02.D118C54F38E42.wav    CX_Media_06:OMFI MediaFiles:zCassie:

And here is how I need it to look:

pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zCassie/WA6016_03.A01.D114D54EF9A91.wav' copied
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zCassie/FRK6030_04A01.D11A054F4C480.wav' copied
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zCassie/FRK6029_03A01.D11A054F4C47D.wav' copied
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zCassie/FRK6031_02A01.D11A054F4C481.wav' copied
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zCassie/FRK6032_06A01.D11A054F4C486.wav' copied
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zCassie/FRK6032_04A01.D11A054F4C485.wav' copied
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zCassie/FRK6028_02A01.D11A054F4C47B.wav' copied
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zCassie/FRK6027_03A01.D11A054F4C47A.wav' copied
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zCassie/VI6006_01.A01.D114D54EF9A85.wav' copied
pause
cp '/Volumes/CX_Jeff_Render_01/OMFI MediaFiles/zJeff_AP/R6v0307,Audio Mixdo54FC00E1.wav' copied
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zTommy_AP/Bass_Drop_A01.D10BF54E6B931.wav' copied
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zTommy_AP/Bass_Drop_A02.D10BF54E6B931.wav' copied
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zCassie/R6v0225_BTA01.D118C54F38E42.wav' copied
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zCassie/R6v0225_BTA02.D118C54F38E42.wav' copied
pause

Thanks for your help!

Try:

awk -F'\t+|  +|:' '{$NF=$1 q " copied"; $1="pause\ncp " q "/Volumes"}1' q=\' OFS=/ file

Thanks for the response!

This is almost perfect except it's doing two things that break it...

/OMFI MediaFiles/

is becoming

/OMFI/MediaFiles/

Also

R6v0307,Audio Mixdo54FC00E1.wav    CX_Jeff_Render_01:OMFI MediaFiles:zJeff_AP:

is becoming

cp '/Volumes/Mixdo54FC00E1.wav/AP_Jeff_Render_01/OMFI/MediaFiles/zJeff_AP/R6v0307,Audio' copied

when it needs to be:

cp '/Volumes/CX_Jeff_Render_01/OMFI MediaFiles/zJeff_AP/R6v0307,Audio Mixdo54FC00E1.wav' copied

All of these lists can be sourced from many different drive names and paths so the script would have to account for that. That thing was so close!

Strange, I get:

$ awk -F'\t+|  +|:' '{$NF=$1 q " copied"; $1="pause\ncp " q "/Volumes"}1' q=\' OFS=/ file
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zCassie/WA6016_03.A01.D114D54EF9A91.wav' copied
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zCassie/FRK6030_04A01.D11A054F4C480.wav' copied
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zCassie/FRK6029_03A01.D11A054F4C47D.wav' copied
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zCassie/FRK6031_02A01.D11A054F4C481.wav' copied
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zCassie/FRK6032_06A01.D11A054F4C486.wav' copied
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zCassie/FRK6032_04A01.D11A054F4C485.wav' copied
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zCassie/FRK6028_02A01.D11A054F4C47B.wav' copied
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zCassie/FRK6027_03A01.D11A054F4C47A.wav' copied
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zCassie/VI6006_01.A01.D114D54EF9A85.wav' copied
pause
cp '/Volumes/CX_Jeff_Render_01/OMFI MediaFiles/zJeff_AP/R6v0307,Audio Mixdo54FC00E1.wav' copied
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zTommy_AP/Bass_Drop_A01.D10BF54E6B931.wav' copied
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zTommy_AP/Bass_Drop_A02.D10BF54E6B931.wav' copied
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zCassie/R6v0225_BTA01.D118C54F38E42.wav' copied
pause
cp '/Volumes/CX_Media_06/OMFI MediaFiles/zCassie/R6v0225_BTA02.D118C54F38E42.wav' copied
$ echo 'R6v0307,Audio Mixdo54FC00E1.wav    CX_Jeff_Render_01:OMFI MediaFiles:zJeff_AP:' |
awk -F'\t+|  +|:' '{$NF=$1 q " copied"; $1="pause\ncp " q "/Volumes"}1' q=\' OFS=/
pause
cp '/Volumes/CX_Jeff_Render_01/OMFI MediaFiles/zJeff_AP/R6v0307,Audio Mixdo54FC00E1.wav' copied

Is your actual file different from your sample?

Maybe it would help if I posted a larger example? Also I'm running this in Terminal on OS X... not sure if that makes a difference.

I've attached a real example to this post.

Thanks so much for your help.

Okay I ran that example I attached in a different way and it seemed to correct the mistakes I mentioned before.

There are 11 lines that still break though by adding a // before the drive name:

cp '/Volumes//AP_SFX_01/OMFI MediaFiles/zFreeze.21/SFX - ElevA01.C4E3B74A2.1.wav' copied
cp '/Volumes//AP_Media_06/OMFI MediaFiles/zCassie/Copy of waA01.D54B0A1FA.1.wav' copied
cp '/Volumes//AP_SFX_01/Avid MediaFiles/MXF/zFreeze.3/MACHINES?RA01.C4BE04D4D.1.mxf' copied
cp '/Volumes//AP_SFX_01/OMFI MediaFiles/zFreeze.3/FX Exotic A01.C4C33B2F7.1.wav' copied
cp '/Volumes//AP_SFX_01/Avid MediaFiles/MXF/zFreeze.3/MACHINES?RA02.C4BE04D4D.1.mxf' copied
cp '/Volumes//AP_SFX_01/OMFI MediaFiles/zFreeze.3/FX Exotic A02.C4C33B2F7.1.wav' copied
cp '/Volumes//AP_Media_06/OMFI MediaFiles/zCassie/Copy of waA01.D54B0A1FA.2.wav' copied
cp '/Volumes//AP_Media_06/OMFI MediaFiles/zCassie/Copy of waA01.D54B0A1FA.3.wav' copied
cp '/Volumes//AP_Media_03/OMFI MediaFiles/consolidated/07 In the Jungl538C50A0.1.wav' copied
cp '/Volumes//AP_Jeff_Render_01/OMFI MediaFiles/zJeff_AP.1/08 Corona Radia54CA78B2.1.wav' copied
cp '/Volumes//AP_Jeff_Render_01/OMFI MediaFiles/zJeff_AP.1/R3v0205.Copy.0154D3C121.1.wav' copied

Are you seeing that on your end?

---------- Post updated at 02:44 PM ---------- Previous update was at 02:36 PM ----------

You know what? These are just files that don't exist on the drives anymore. I think your script is actually flawless.

THANK YOU SO MUCH!

You are welcome. This seems to work a little better with your provided input file:

awk -F'\t|:' '{sub(/ *$/,x,$1); $NF=$1 q " copied"; $1="pause\ncp " q "/Volumes"}1' q=\' OFS=/ file

One last thing...

Is there any way to get it to output a new .txt file of the results so I don't have to copy paste out of the terminal window?

Yes just add

> newfile.txt

at the end

Amazing. Thank you.