Difference between revisions of "Loops"
From Steak Wiki
Jump to navigationJump to search(6 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
+ | |||
+ | ===Template Loop=== | ||
This is a basic (bash) loop to operate on files. | This is a basic (bash) loop to operate on files. | ||
− | + | <pre> | |
− | + | for i in *.7z | |
+ | do name=`echo $i | cut -d'.' -f1`; | ||
+ | echo $name; | ||
+ | 7z e -o"$name" ./"$i" | ||
+ | done | ||
+ | </pre> | ||
+ | Here's the above with comments included. | ||
<pre> | <pre> | ||
#!/bin/bash -x | #!/bin/bash -x | ||
Line 24: | Line 32: | ||
while true; do echo "ok"; sleep 1; done | while true; do echo "ok"; sleep 1; done | ||
− | ===Batch | + | ===Batch remove EXIF data and resize photos=== |
+ | |||
+ | for i in *.{jpg,JPG,png,PNG} | ||
+ | do | ||
+ | mogrify -strip $i | ||
+ | convert $i -resize 240x180\! edit_$i | ||
+ | done | ||
+ | verify the data is gone with | ||
+ | identify -verbose filename | grep exif | ||
+ | <small>#note the \! is required to force it to ignore aspect ratio... also note that magick == convert</small> | ||
+ | ====Above but add date==== | ||
<pre> | <pre> | ||
#!/bin/bash | #!/bin/bash | ||
+ | DATE=$(date "+%Y_%m_%d") | ||
for i in *.JPG | for i in *.JPG | ||
do | do | ||
Line 32: | Line 51: | ||
mogrify -strip $i | mogrify -strip $i | ||
#test convert size in gimp first to get ratio right | #test convert size in gimp first to get ratio right | ||
− | convert -resize 1080x810 $i ~/Desktop/photofolder/$i | + | convert -resize 1080x810 $i ~/Desktop/photofolder/$DATE$i |
done | done | ||
</pre> | </pre> | ||
− | + | ====rotate==== | |
− | |||
<pre> | <pre> | ||
− | + | for i in *.jpg | |
− | + | do convert $i -rotate 90 $i; #use -90 for ccw | |
− | for i in *. | ||
− | do | ||
− | |||
− | |||
− | # | ||
− | |||
done | done | ||
</pre> | </pre> |
Latest revision as of 09:51, 30 December 2023
Template Loop
This is a basic (bash) loop to operate on files.
for i in *.7z do name=`echo $i | cut -d'.' -f1`; echo $name; 7z e -o"$name" ./"$i" done
Here's the above with comments included.
#!/bin/bash -x #for i in *.webm; for i in *.7z do name=`echo $i | cut -d'.' -f1`; echo $name; #for h264 # ffmpeg -i $i -s 1280x720 -c:a copy $name.mp4; #for webm #-map_metadata -1 is to remove metadata, at least try to remove some. (need to verify) #ffmpeg -i $i -map_metadata -1 -c:v libvpx -crf 10 -b:v 1M -c:a libvorbis $name.webm 7z e -o"$name" ./"$i" done
Basically, trim off extension of i, put into name. Use both for extractions/conversion.
One Liner Loop
while true; do echo "ok"; sleep 1; done
Batch remove EXIF data and resize photos
for i in *.{jpg,JPG,png,PNG} do mogrify -strip $i convert $i -resize 240x180\! edit_$i done
verify the data is gone with
identify -verbose filename | grep exif
#note the \! is required to force it to ignore aspect ratio... also note that magick == convert
Above but add date
#!/bin/bash DATE=$(date "+%Y_%m_%d") for i in *.JPG do #delete exif data mogrify -strip $i #test convert size in gimp first to get ratio right convert -resize 1080x810 $i ~/Desktop/photofolder/$DATE$i done
rotate
for i in *.jpg do convert $i -rotate 90 $i; #use -90 for ccw done
Interactive Range Loop
#!/bin/bash for i in {1..254}; do some program that stalls goes here; done
this will stop at the program, if it doesn't immediately complete so do this: ctrl - \
that will skip to the next range loop (i increments). note its not ctrl - c which will exit script. you can hold ctrl and depress \
What is CTRL - \? https://en.wikipedia.org/wiki/Signal_(IPC) One of the other options besides ctrl - c.
read file into command line by line
#!/bin/bash input="text_file.txt" while IFS= read -r line do wget $line done < "$input"
Obviously here, wget is the command being used. This example downloads from a text file with a list of URLs.