BASH File Manipulation
From Indie IT Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
HOWTO: Create Directory From Photo Creation Date
sudo aptitude install libimage-exiftool-perl
YEAR/MONTH/DAY
IMG=~/Pictures/PhotosFromPhone/IMG_20150924_100801.jpg; IMGDATE=$(exiftool "${IMG}" | grep -m1 'Create Date' |awk -F' ' '{print $4}' | tr ':' '/'); echo "${IMGDATE}"; mkdir -p "~/Pictures/Photos/${IMGDATE}"
YEAR/MONTH
IMG=~/Pictures/PhotosFromPhone/IMG_20150924_100801.jpg; IMGDATE=$(exiftool "${IMG}" | grep -m1 'Create Date' |awk -F':' '{print $2"/"$3}' |tr -d ' '); echo "${IMGDATE}"; mkdir -p "~/Pictures/Photos/${IMGDATE}"
Tweaks...
HOWTO: TEXT FILES:
Number Beginning Of Lines
cat file.txt |nl
Convert Text To Lowercase
echo "FISH" | tr '[:upper:]' '[:lower:]' cat file.txt | tr '[:upper:]' '[:lower:]'
View A Text File With NO Word Wrap
less -S file.txt
Remove Blank Lines
sed -i '/^$/d' file.txt or cat myfile.txt |sed '/^$/d'
Convert Tabs To Spaces In a File
expand file.txt
COPY FILE TO NEW DIRECTORY
IMG=~/Pictures/PhotosFromPhone/IMG_20150924_100801.jpg; IMGDATE=$(exiftool "${IMG}" | grep -m1 'Create Date' |awk -F':' '{print $2"/"$3}' |tr -d ' '); IMGDIR="~/Pictures/Photos/${IMGDATE}"; mkdir -p "$IMGDIR"; cp -a -v "${IMG}" "${IMGDIR}"
MOVE FILE TO NEW DIRECTORY
IMG=~/Pictures/PhotosFromPhone/IMG_20150924_100801.jpg; IMGDATE=$(exiftool "${IMG}" | grep -m1 'Create Date' |awk -F':' '{print $2"/"$3}' |tr -d ' '); IMGDIR="~/Pictures/Photos/${IMGDATE}"; mkdir -p "$IMGDIR"; mv -v "${IMG}" "${IMGDIR}"
COMPLETE WORKING SCRIPT
#!/bin/bash PHOTOS=/home/paully/Pictures/PhotosFromPhone/*.jpg; for P in ${PHOTOS} do IMG=${P}; IMGDATE=$(exiftool "${IMG}" | grep -m1 'Create Date' |awk -F':' '{print $2"/"$3}' |tr -d ' '); IMGDIR="/home/paully/Pictures/Photos/${IMGDATE}"; mkdir -p "$IMGDIR"; cp -a -v "${IMG}" "${IMGDIR}" done
Thanks - http://stackoverflow.com/questions/32062159/how-retrieve-the-creation-date-of-photos-with-a-script
HOWTO: Show The Resolution / DPI Of An Image
identify -verbose photo.jpg |grep 'Resolution' Resolution: 72x72
Add A Zero To The Beginning Of A Filename
$ renamexm -t -v -s/^/0/r [0-9] *.mp3 rename 1 Subdivisions.mp3 => 01 Subdivisions.mp3 : tested rename 2 The Analog Kid.mp3 => 02 The Analog Kid.mp3 : tested rename 3 Chemistry.mp3 => 03 Chemistry.mp3 : tested rename 4 Digital Man.mp3 => 04 Digital Man.mp3 : tested rename 5 The Weapon.mp3 => 05 The Weapon.mp3 : tested rename 6 New World Man.mp3 => 06 New World Man.mp3 : tested rename 7 Losing It.mp3 => 07 Losing It.mp3 : tested rename 8 Countdown.mp3 => 08 Countdown.mp3 : tested
Delete Characters On Just The First Line
This deletes all the quotation (") characters on just the first line of a CSV file...
sed '1s/"//g' /tmp/oldfile.csv > /tmp/newfile.csv
http://sed.sourceforge.net/sed1line.txt
HOWTO: Mass File Rename Incrementing Number in File Name
export j=0 for i in *.mkv ; do let j+=1 ; mv -v $i "Willow the Wisp S01E$j.mkv" ; done
HOWTO: Mass File Rename Deleting Part Of Name
e.g.
Scooby_Doo_Mystery_Incorporated_S02E25 Through The Curtain 720p x264.mp4 => Scooby_Doo_Mystery_Incorporated_S02E25.mp4
Do...
renamexm -v -s/" .*.mp4"/".mp4"/e *.mp4
HOWTO: Rename All Files Add File Extension
for f in *; do mv "$f" "$f.jpg"; done
HOWTO: Find Out Length Of Longest Line In A File
wc -L file
HOWTO: Find Line Exceeding N Characters
grep '.\{N\}' file
HOWTO: Trim Leading White Space
sed 's/^ *//g'
e.g.
lynx -nolist -dump http://wiki.indie-it.com/wiki/Television_Paully |sed -n '/What I Am Currently Watching/,/What I Have Been Watching/p' |sed 's/^ *//g' |egrep '^[0-9]'
Thanks to Stackoverflow.
HOWTO: Pattern Match Between 2 Lines
I Love Linux ***** BEGIN ***** BASH is awesome BASH is awesome ***** END ***** I Love Linux
sed -n '/BEGIN/,/END/p'
Thanks to Shell Hacks]