Example rename patterned files in subfolders: Difference between revisions

From WickyWiki
mNo edit summary
mNo edit summary
Line 37: Line 37:
#get year,title,author
#get year,title,author
year=$( echo $path | rev | cut --delimiter=/ -f1 | rev )
year=$( echo $path | rev | cut --delimiter=/ -f1 | rev )
title=$( echo $name | sed 's/ by .*//gI' )
title=$( echo $name | sed 's/ [Bb]y .*//' )
author=$( echo $name | sed 's/.* by //gI' )
author=$( echo $name | sed 's/.* [Bb]y //' )
#add new name to rename script
#add new name to rename script

Revision as of 22:47, 15 February 2019


Example-script to rename multiple files in subfolders that have a pattern, include the top subfolder in the new pattern.

Filename format:

  • ".\subdir1\${year}\ ${title} by ${author}.${ext}"

New name and location:

  • "./${author} - Stories [${year}] - ${title}.${ext}"
#go to the folder
cd "/some/folder/on/a/disk"

echo "#!/bin/bash" > ./aaa_copy.sh

# index files .txt and .rtf in subfolders
unset files i
while IFS= read -r -u3 -d $'\0' file; do
    files[i++]="$file"
done 3< <( find "./" -type f \( -iname "*.txt" -o -iname "*.rtf" \) -print0  )
echo "${#files[@]} files found"

# loop over found files
i=0
while [ $i -lt ${#files[@]} ] ; do
	file="${files[$i]}"
	echo $file

	#get path, name, ext
	path=$(dirname "${file}")
 	nameext="${file##*/}"
	name="${nameext%.*}"
	ext="${nameext##*.}"

	#get year,title,author
	year=$( echo $path | rev | cut --delimiter=/ -f1 | rev )
	title=$( echo $name | sed 's/ [Bb]y .*//' )
	author=$( echo $name | sed 's/.* [Bb]y //' )
	
	#add new name to rename script
	echo "cp \"${file}\" \"./${author} - Stories [${year}] - ${title}.${ext}\"" >> ./aaa_copy.sh

	i=$(( $i + 1 ))
done

See also