There have been multiple accounts created with the sole purpose of posting advertisement posts or replies containing unsolicited advertising.

Accounts which solely post advertisements, or persistently post them may be terminated.

small script help, action each file in a folder

So, I was doing this:

ffmpeg -i /media/johann/5461-000B/DCIM/100MEDIA/IMAG0079.AVI -ss 00:00:00 -t 00:00:20 ~/Public/240321/240321_0079.avi ; rm /media/johann/5461-000B/DCIM/100MEDIA/IMAG0079.AVI

one at a time changing the IMAG0079 to IMAG0080 etc every time. I am sure there must be a way to perform two actions (ffmpg) and (rm) on each file in a folder. Can anyone help (For next time)

Thanks!

12510198 ,

What about something like this:


<span style="font-weight:bold;color:#a71d5d;">for</span><span style="color:#323232;"> i </span><span style="font-weight:bold;color:#a71d5d;">in</span><span style="color:#323232;"> /media/johann/5461-000B/DCIM/100MEDIA/</span><span style="font-weight:bold;color:#a71d5d;">*</span><span style="color:#323232;">.AVI</span><span style="font-weight:bold;color:#a71d5d;">; do </span><span style="color:#323232;">newpath</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"$</span><span style="color:#323232;">HOME</span><span style="color:#183691;">/Public/240321/$(</span><span style="color:#323232;">basename </span><span style="color:#183691;">"$</span><span style="color:#323232;">i</span><span style="color:#183691;">" </span><span style="font-weight:bold;color:#a71d5d;">| </span><span style="color:#323232;">sed </span><span style="color:#183691;">'s/^IMAG/240321_/g')"</span><span style="font-weight:bold;color:#a71d5d;">; </span><span style="color:#323232;">ffmpeg -i </span><span style="color:#183691;">"$</span><span style="color:#323232;">i</span><span style="color:#183691;">"</span><span style="color:#323232;"> -ss 00:00:00 -t 00:00:20 </span><span style="color:#183691;">"$</span><span style="color:#323232;">newpath</span><span style="color:#183691;">" </span><span style="font-weight:bold;color:#a71d5d;">&& </span><span style="color:#323232;">rm </span><span style="color:#183691;">"$</span><span style="color:#323232;">i</span><span style="color:#183691;">"</span><span style="font-weight:bold;color:#a71d5d;">; done
</span>
johsny OP ,
@johsny@lemmy.world avatar

Awesome! Thanks, I knew there had to be a way!

edit: This also works: for i in *.avi; do ffmpeg -i “$i” -ss 00:00:00 -t 00:00:10 ~/Public/test/${i%.*}.avi ; done

But yours is much nicer.

ClemaX ,

Try this:


<span style="font-weight:bold;color:#a71d5d;">for</span><span style="color:#323232;"> file </span><span style="font-weight:bold;color:#a71d5d;">in</span><span style="color:#323232;"> ./</span><span style="font-weight:bold;color:#a71d5d;">*
</span><span style="font-weight:bold;color:#a71d5d;">do
</span><span style="color:#323232;">    </span><span style="color:#62a35c;">echo </span><span style="color:#183691;">"$</span><span style="color:#323232;">file</span><span style="color:#183691;">"
</span><span style="font-weight:bold;color:#a71d5d;">done
</span>

To do some substitution operation om the filename you can use Bash Parameter Expansion.

GravitySpoiled ,

Use another folder instead of name

johsny OP ,
@johsny@lemmy.world avatar

The input filename changes each time.

GravitySpoiled , (edited )

<span style="color:#323232;">find -name "*.avi" | while read file;
</span><span style="color:#323232;">do
</span><span style="color:#323232;">  echo -v "$file"
</span><span style="color:#323232;">done
</span>

edited

johsny OP ,
@johsny@lemmy.world avatar

Almost, here is the one that worked: for i in *.avi; do ffmpeg -i “$i” -ss 00:00:00 -t 00:00:10 ~/Public/test/${i%.*}.avi ; done

Thanks for pointing me in the right direction.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • [email protected]
  • lifeLocal
  • random
  • goranko
  • All magazines