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/ | title=$( echo $name | sed 's/ [Bb]y .*//' ) | ||
author=$( echo $name | sed 's/.* | 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