Skript zum Verschieben oder Entpacken von Dateien (rtorrent, wenn das Skript fertig ist)

955
junkyhlm

Das Konzept

Ich habe also schon eine Weile mit einem Skript zu kämpfen, das ausgeführt wird, wenn rtorrent den Download abgeschlossen hat. Das Skript sollte das dritte Argument von rtorrent prüfen und entsprechend handeln.

.rtorrent.rc:

system.method.set_key = event.download.finished,unrar_move_files,"execute={/home/holmen/script/testrt.sh,$d.get_base_path=,$d.get_name=,$d.get_custom1=}" 

Das Skript sieht so aus:

#!/bin/bash # First, copy the downloaded material to the storage drive # then unpack the files (if the unrar returned successful) # lastly remove the rar files with rm -rfv command  hdfilm1=/media/store1/HD-film hdfilm2=/media/store2/HD-film download=/media/store3/Download  # Copy the downloaded material to correct storage drive rsync -r --info=progress2 "$download"/"$2" "$3"  if [ "$3" = "$hdfilm1" ] || [ "$3" = "$hdfilm2" ]; then # Check folders and subfolders of the downloaded material while IFS= read -r dir; do # Find and unpack archive files if [ "$(find $dir | egrep -i '\.r00|\.001|part01\.rar|part001\.rar|subs\.rar')" ]; then rarFile=`ls $dir | egrep -i '\.r00|\.001|part01\.rar|part001\.rar|subs\.rar'`; searchPath="$dir/$rarFile" yes no | nice -n 15 unrar x -o+ "$searchPath" "$dir" remFile=`ls $dir | egrep -i '\.(rar|sfv|r([0-9]))$'`; remPath="$dir/$remFile" rm -rfv $remPath fi done < <(find "$3"/"$2" -type d) fi 

Dies funktioniert grundsätzlich, aber ich habe Probleme beim Versuch, die Archivdateien zu löschen (nachdem sie entpackt wurden). Beim Hinzufügen eines Remove-Skripts in der whileSchleife entfernt das Skript nur die Dateien in dem jeweiligen Unterordner, in dem es sich gerade befindet.

Das Skript entpackt:

/media/store1/HD-film/Movie.folder/*.rar /media/store1/HD-film/Movie.folder/Subs/*.rar 

Entfernt jedoch nur die rar-Dateien in diesem Ordner

/media/store1/HD-film/Movie.folder/Subs/ 

Wie kann ich das korrigieren, damit mein Skript die Archivdateien auch im übergeordneten Ordner entfernt?

Edit: Ich habe versucht, den rmBefehl nach dem Unrar-Befehl mit zu setzen, &&aber das Ergebnis ist das gleiche.

if [ "$(find $dir | egrep -i '\.r00|\.001|part01\.rar|part001\.rar|subs\.rar')" ]; then rarFile=`ls $dir | egrep -i '\.r00|\.001|part01\.rar|part001\.rar|subs\.rar'`; searchPath="$dir/$rarFile" remFile=`ls $dir | egrep -i '\.(rar|sfv|r([0-9]))$'`; remove="$dir/$remFile" yes no | nice -n 15 unrar x -o+ "$searchPath" "$dir" && rm -rfv "$remove" fi 
0
Wie versuchen Sie, rar-Dateien zu entfernen? Es wäre besser, dies in den veröffentlichten Code aufzunehmen. janos vor 7 Jahren 0
Ich habe diesen Code dem if-Abschnitt der while-Schleife hinzugefügt: remFile = `ls $ dir | egrep -i '\. [r | s | 0-9] [a | f | 0-9] [r | v | 0-9] $' `; remPath = "$ dir / $ remFile"; rm -rfv $ remPath junkyhlm vor 7 Jahren 0
Es wäre besser, das in Ihre Frage einzuarbeiten janos vor 7 Jahren 0
Ich habe meine Frage bearbeitet junkyhlm vor 7 Jahren 0

1 Antwort auf die Frage

0
junkyhlm

Ich habe eine Lösung für mein Problem mit diesem Skript gefunden . Ich habe es in mein Skript implementiert.

#!/bin/bash  # Variables hdfilm1=/media/store1/HD-film hdfilm2=/media/store2/HD-film tvshow1=/media/store0/Serier tvshow2=/media/store2/Serier download=/media/store3/Download  # Copy the downloaded material to correct storage drive rsync -r --info=progress2 "$download"/"$2" "$3"  if [ "$3" = "$hdfilm1" ] || [ "$3" = "$hdfilm2" ] || [ "$3" = "$tvshow1" ] || [ "$3" = "$tvshow2" ]; then /home/holmen/script/unrarall --clean=rar,proof_folders,sample_folders,sample_videos,empty_folders "$3"/"$2" fi