Salin file yang sudah selesai lebih besar dari 1024M ke direktori lain

0

Saya menggunakan daemon transmisi. Ini adalah variabel lingkungan penyelesaian torrent yang didukung oleh daemon transmisi seperti yang ditunjukkan di sini . Di direktori unduhan yang selesai, temukan dan salin file apa pun yang lebih besar dari 1024M ke direktori lain.

Ini tidak bekerja:

find $TR_TORRENT_DIR/$TR_TORRENT_NAME -type f -size +1024M -exec cp {} /path/to/copies/ \;

Ini berfungsi, tetapi menggunakan direktori untuk semua torrent yang telah selesai:

find $TR_TORRENT_DIR -type f -size +1024M -exec cp {} /path/to/copies/ \;

Ini berfungsi, dan menyalin direktori induk dari torrent yang selesai:

cp -R "$TR_TORRENT_DIR/$TR_TORRENT_NAME" "/path/to/copies/"

Bantuan apa pun akan sangat dihargai!

David Custer
sumber

Jawaban:

0
  1. Anda ingin menyalin torrent yang sudah selesai ke lokasi baru
  2. Anda memiliki direktori ($ TR_TORRENT_DIR) tempat semua torrent yang diunduh. Di direktori, setiap torrent baru memiliki direktori ($ TR_TORRENT_NAME) sendiri.

Dengan asumsi ini, lakukan

find $TR_TORRENT_DIR

untuk mencari melalui semua folder, bukan hanya satu.

Pembaruan: Temukan file 1G dan lebih besar, dapatkan jalur file, salin seluruh direktori induk file ke tujuan.

Itu bisa terlihat seperti di bawah ini. Dapat ditingkatkan untuk mengidentifikasi apakah dua atau lebih file ditemukan di sub direktori dari direktori induk yang sama dan hanya menyalinnya sekali.

find $TR_TORRENT_DIR/ -type f -size +1024M -exec echo {} \; \
| while read filepath
do
    parentdir=$(dirname $filepath)
    cp -a $parentdir /path/to/copies/
done

Perhatikan bahwa hal di atas dapat rusak jika nama file berisi karakter eksotis.

jonatan
sumber
Cukup adil - satu pembaruan terakhir
jonatan
0

Mungkin:

cd "$TR_TORRENT_DIR" && cp -R "$TR_TORRENT_NAME" "/path/to/copies/"
Dan D.
sumber
0
find "$TR_TORRENT_DIR/$TR_TORRENT_NAME" -type f -size +1024M -exec cp {} /path/to/copies/ \;
David Custer
sumber