Intereting Posts
Найти последние версии нескольких файлов в нескольких каталогах Разрешить всем членам группы создавать каталоги и файлы Как рассчитать проценты каждого столбца? Вызов Bash, который не будет сжимать длинные команды Как установить программное обеспечение Netbackup в Solaris? Извлечение некоторых файлов из папки и создание списка этих файлов Как сделать пароль sudo автоматически автоматически, не запрашивая его? Графический интерфейс низкого разрешения для Linux на RaspberryPi, используемый в качестве мобильного устройства В чем разница между rdesktop и xfreerdp? sshfs: разрешение отклонено при попытке доступа к определенной папке `git remote add` в домашний каталог '~` выражение Как запустить скрипт Python в Makefile Ошибка при попытке установить MTD-устройство из Linux Как ssh на удаленную машину и создать нового пользователя в сценарии bash как настроить имя пользователя и пароли для разных git-репозиций?

Передача: избавиться от старых не удаленных файлов?

Я использую передачу для скачивания различных торрентов, но время от времени передача не удаляет файл, а удаляет файл торрента.

Это означает, что моя папка загрузки заполнена уже удаленными торрентами, но файлы все еще существуют.

Каков наилучший способ найти, какие файлы в настоящее время не связаны с каким-либо загруженным торрентом и удалить их?

Спасибо за ваше время!

Вы можете запросить пульт дистанционного управления для списка файлов, о которых он знает. Существует два варианта запроса файлов: --files и --info-files/-if ; который вам нужен, вероятно, зависит от версии, в которой вы работаете:

 $ transmission-remote «host» -N ~/.transmission-netrc -t all --files # or -if musopen-lossless-dvd (4 files): # Done Priority Get Size Name 0: 100% Normal Yes 8.07 GB musopen-lossless-dvd/Musopen-Lossless-DVD.zip ⋮ 

К сожалению, он предназначен для отображения, а не для синтаксического анализа, и, похоже, нет возможности сделать вывод на основе сценариев. Если вы программист, вы можете захватить источник и исправить это или, альтернативно, взломать собственную реализацию в Perl / Python / Ruby / JavaScript / etc. для получения имен файлов. Передача использует документированный, довольно простой протокол JSON-over-HTTP .

Вы также можете попробовать – --move чтобы --move передачу, чтобы переместить все, что он знает в новый каталог.

Это старый вопрос, но я наткнулся на него, пытаясь решить это, и я думаю, что другие могут тоже.

Используя ответ 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, и это довольно медленный скрипт с большим количеством торрентов, поскольку поиск подстроки с помощью этого метода кажется медленным, не стесняйтесь предлагать альтернативы. Я подозреваю, что это может сломаться и с необычными именами файлов.