Skenario contoh:
Saya memiliki banyak file yang diakhiri .torrent
dan saya ingin memindahkannya ke folder yang memiliki nama yang sama.
Misalnya diberikan file-file berikut:
abc.torrent
def.torrent
some files has spaces.torrent
or [special] (characters).torrent
or . (dots).torrent
xyz.torrent
Saya ingin memindahkannya ke folder yang sesuai (jika ada) yang memiliki nama yang persis sama, misalnya:
abc.torrent
pergi keabc/
def.torrent
pergi kedef/
- dan seterusnya
Jika folder tidak ada, file harus tetap tidak tersentuh (karena ini mungkin berhubungan dengan unduhan yang tidak lengkap).
Saya percaya BitTorrent tidak memiliki opsi seperti itu. Jika demikian, saya ingin mencari beberapa baris perintah untuk mencapainya.
Secara opsional, saya ingin menentukan folder sumber file saya, dan folder tujuan dengan direktori yang diharapkan.
Ada ide?
Jawaban:
Non-rekursif:
The
${var%pattern}
sintaks menghilangkan pertandingan terpendekpattern
dari ujung variabel. Dalam hal ini, itu hanya menghapus ekstensi.Secara rekursif (menggunakan
bash
):The
globstar
pilihan membuat**
ditemukan file dan 0 atau lebih direktori. Perhatikan bahwa di atas mengharapkan direktori target menjadi subdirektori dari direktori induk file torrent. Jadi, jika suatu file berada difoo/bar/baz.torrent
, itu akan dipindahkan kefoo/bar/baz/baz.torrent
.Non-rekursif, membuat direktori jika tidak ada:
The
-p
pilihan mengatakanmkdir
untuk mencetak ada kesalahan jika direktori sudah ada dan untuk membuat direktori induk yang diperlukan. Jadi,mkdir -p foo/bar/baz
juga akan membuatfoo
danbar
direktori jika tidak ada.Secara rekursif, membuat direktori jika tidak ada:
sumber
$_
dalammv
perintah yangmkdir
sepertinya memperbaruinya terlepas dari apakah direktori tersebut ada atau tidak.**/*torrent
versi menghasilkan jalur, jadi-d
periksa lagi jalurnya (bukan nama sendiri), di sini adalah versi yang menggunakan nama dasar dan pindah ke/foo
folder:for t in **/*torrent; do [ -d /foo/"$(basename "${t%.*}")" ] && mv -v "$t" /foo/"$(basename "${t%.*}")/"; done
Karena saya tidak dapat menemukan opsi semacam itu pada BitTorrent versi OS X, saya telah menulis satu baris berikut:
Ini akan mencari
.torrent
file di direktori saat ini (.
) dan menemukan folder (DST
) dengan nama yang sama secara rekursif ditemukan di folder yang sama (.
). Untuk memeriksa direktori yang berbeda, ubah titik (.
) ke tujuan yang sesuai. Lihat naskah lengkap:mv_torrents.sh
.sumber