トランスポートから孤児急流データを識別して削除する方法は?

トランスポートから孤児急流データを識別して削除する方法は?

さまざまな急流をダウンロードするためにTransmissionを使用してきましたが、クライアントはファイルを削除せずに代わりに急流ファイルを削除することがあります。

これにより、削除された急流がダウンロードフォルダにいっぱいになりましたが、ファイルはそのまま残りました。

現在ロードされている急流にリンクされていないファイルを見つけて削除する最良の方法は何ですか?

ベストアンサー1

derobertの答えを使用して、リストされていないすべてのファイルを削除するbashスクリプトを作成しました。transmission-remote

#!/bin/bash

# get a list of all torrents transmission-remote 2.52
transmission-remote 127.0.0.1 -t all --files > _all_torrents.tmp

# all items in this directory
for i in * 
do      
        # is it a file or a directory
        if test -f "$i" -o -d "$i"
        then    
                # does it NOT exist in the list of all torrent files
                #if [[ $all_files != *"$i"* ]]
                if ! grep -Fq "$i" _all_torrents.tmp
                then    
                        # does it not start with an underscore (my special char for files in directory not related to transmission
                        if [[ "$i" != _* ]]
                        then
                                # delete them
                                echo rm -rf \"$i\"
                                # rm -rf "$i"
                        fi
                fi
        fi
done

# clear tmp file
rm _all_torrents.tmp

実際にファイルを削除する行はコメントアウトされています。何が削除されるかを確認するには、実行する前にスクリプトを実行することをお勧めします。また、ダウンロードフォルダに残しておくと、「不完全」ディレクトリなど、転送にリストされていないファイルも削除されます。

私はbashスクリプトの専門家から離れています。これは、多くの急流を含むかなり遅いスクリプトです。この方法で部分文字列を検索するのは遅いように見えるので、自由に代替案を提案してください。異常なファイル名が原因で問題が発生する可能性があります。

おすすめ記事