Script untuk memindahkan atau membongkar file (rtorrent ketika skrip selesai)

0

Konsep

Jadi saya sudah berjuang untuk sementara waktu sekarang dengan skrip yang akan berjalan ketika rtorrent telah selesai mengunduh. Script harus memeriksa argumen ketiga dari rtorrent dan bertindak sesuai.

.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=}"

Scriptnya terlihat seperti ini:

#!/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]{2}))$'`;
                        remPath="$dir/$remFile"
                        rm -rfv $remPath
                fi
        done < <(find "$3"/"$2" -type d)
fi

Ini pada dasarnya bekerja tetapi saya mengalami masalah ketika mencoba untuk menghapus file arsip (setelah mereka membongkar). Saat menambahkan skrip hapus di while loop skrip hanya menghapus file dalam subfolder khusus pada saat ini.

Script membongkar:

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

tetapi hanya menghapus file rar di folder ini

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

Bagaimana saya bisa memperbaikinya sehingga skrip saya juga menghapus file arsip di folder induk?

Edit: Saya sudah mencoba meletakkan rm perintah setelah perintah unrar dengan && tetapi hasilnya sama.

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]{2}))$'`;
     remove="$dir/$remFile"
     yes no | nice -n 15 unrar x -o+ "$searchPath" "$dir" && rm -rfv "$remove"
fi
junkyhlm
sumber
Bagaimana Anda mencoba menghapus file rar? Akan lebih baik untuk memasukkan itu dalam kode yang diposting.
janos
Saya menambahkan kode ini ke bagian if dari while loop: remFile = `ls $ dir | egrep -i '\. [r | s | 0-9] [a | f | 0-9] [r | v | 0-9] $' `; remPath = "$ dir / $ remFile"; rm -rfv $ remPath
junkyhlm
Akan lebih baik untuk mengeditnya menjadi pertanyaan Anda
janos
Saya telah mengedit pertanyaan saya
junkyhlm

Jawaban:

0

Saya telah menemukan solusi untuk masalah saya dengan skrip ini batalkan pencekalan . Saya sudah menerapkannya dalam skrip saya.

#!/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
junkyhlm
sumber