David Custer
David Custer

Reputation: 651

find and move files based on file name pattern using linux script

I would like to sort two different file name patterns into two different folders.

The two file name patterns are:

and

Upvotes: 1

Views: 1787

Answers (2)

John1024
John1024

Reputation: 113814

This will move the first group to folder1:

mv *s[0-9][0-9]* *e[0-9][0-9]* *s[0-9]e[0-9][0-9][0-9]* *[0-9]x[0-9][0-9]* folder1

With those files out of the way, this will move the ones with something that looks like a valid year to folder2:

mv *19[0-9][0-9]* *20[0-9][0-9]* folder2

Here, I assumed that a "valid year" was going to be between 1900 and 2099.

Upvotes: 1

David Custer
David Custer

Reputation: 651

Thanks to John1024.

Here is a script for recognizing and separating movies & tv shows. Just make sure to edit /path/to/tv-shows/ directory at the end of the first line, and also /path/to/movies/ directory at the end of the second line.

find "$TR_TORRENT_DIR/$TR_TORRENT_NAME" -type f -a -not -size -100M -a -not -size +2G -a -not -iname "*sample*" -a -iname "*s[0-9]*" -o -type f -a -not -size -100M -a -not -size +2G -a -not -iname "*sample*" -a -iname "*e[0-9]*" -o -type f -a -not -size -100M -a -not -size +2G -a -not -iname "*sample*" -a -iname "*s[0-9]e[0-9]*" -o -type f -a -not -size -100M -a -not -size +2G -a -not -iname "*sample*" -a -iname "*s[0-9]e[0-9][0-9][0-9]*" -o -type f -a -not -size -100M -a -not -size +2G -a -not -iname "*sample*" -a -iname "*[0-9]x[0-9][0-9]*" -exec cp {} /path/to/tv-shows/ \;

find "$TR_TORRENT_DIR/$TR_TORRENT_NAME" -type f -a -size +500M -a -not -iname "*sample*" -a -not -iname "*s[0-9]*" -a -iname "*19[0-9][0-9]*" -o -type f -a -size +500M -a -not -iname "*sample*" -a -not -iname "*e[0-9]*" -a -iname "*19[0-9][0-9]*" -o -type f -a -size +500M -a -not -iname "*sample*" -a -not -iname "*s[0-9]e[0-9]*" -a -iname "*19[0-9][0-9]*" -o -type f -a -size +500M -a -not -iname "*sample*" -a -not -iname "*s[0-9]e[0-9][0-9][0-9]*" -a -iname "*19[0-9][0-9]*" -o -type f -a -size +500M -a -not -iname "*sample*" -a -not -iname "*[0-9]x[0-9][0-9]*" -a -iname "*19[0-9][0-9]*" -o -type f -a -size +500M -a -not -iname "*sample*" -a -not -iname "*s[0-9]*" -a -iname "*20[0-9][0-9]*" -o -type f -a -size +500M -a -not -iname "*sample*" -a -not -iname "*e[0-9]*" -a -iname "*20[0-9][0-9]*" -o -type f -a -size +500M -a -not -iname "*sample*" -a -not -iname "*s[0-9]e[0-9]*" -a -iname "*20[0-9][0-9]*" -o -type f -a -size +500M -a -not -iname "*sample*" -a -not -iname "*s[0-9]e[0-9][0-9][0-9]*" -a -iname "*20[0-9][0-9]*" -o -type f -a -size +500M -a -not -iname "*sample*" -a -not -iname "*[0-9]x[0-9][0-9]*" -a -iname "*20[0-9][0-9]*" -exec cp {} /path/to/movies/ \;

Then you can add this to the bottom of the script which removes and deletes torrents that have finished seeding. You will need to replace username and password in both spots.

transmission-remote --auth=username:password -l | grep Finished | \
awk '{print $1}' | xargs -n 1 -I % transmission-remote --auth=username:password -t % --remove-and-delete

Upvotes: 0

Related Questions