"Sinkronkan" konten melalui nama file

2

Oke, well, saya sudah mengunggah 5 gigs gambar ke Dropbox, dan itu langsung dari kamera.

Di negara lain, teman saya dengan internet sampah (yang mengambil CD berisi gambar) menyalin gambar ke folder di desktop-nya dan mulai memilah-milah gambar; itu- menghapus gambar yang buruk / tidak dibutuhkan. Saya tidak dapat memintanya untuk mengunggah 5gigs ke akun dropbox pribadi MY, ketika saya membutuhkan waktu seminggu untuk mengunggah dengan internet saya yang lebih cepat.

Apakah ada perangkat lunak yang dapat saya jalankan di PC Windows 8-nya untuk mengambil daftar nama file (direktori rekursif, karena saya memberikannya diurutkan dalam folder individual untuk setiap acara); yang ketika dijalankan lagi di Macan Tutul Macan Tutul Salju saya akan dapat melihat gambar mana yang dihapus di komputer teman saya; dan kemudian hapus di sisi saya.

Jika program semacam itu tidak ada, kerangka apa yang bisa saya gunakan untuk memprogram ini (saya sedang mengembangkan di Mac)? Dan tips apa yang akan Anda berikan kepada saya?

qaisjp
sumber
Apakah dia mengatur ulang gambar (sehingga mereka mengubah folder), atau hanya menghapus beberapa?
cpast
hanya menghapus beberapa
qaisjp
Tidak juga, karena OS menggunakan cangkang yang berbeda. Jika keduanya menjalankan Windows, saya cukup menjalankan dir / b / a-d & gt; output.txt pada kedua PC dan kemudian gunakan utilitas pembedaan teks untuk mendapatkan daftar perbedaan. Seperti itu, Anda mungkin masih dapat menjalankannya di PC-nya, kemudian jalankan perintah ls yang setara atau apa pun di mac Anda, tetapi format output akan berbeda. Mungkin menggunakan Perl atau sesuatu untuk membaca kedua file menjadi dua hash dan membandingkan hash, lalu menghasilkan perbedaan?
Mark Allen
@ Markallen - Mungkin ada cara yang melibatkan dir /b/s > files pada Windows, dan beberapa awk / sed - & gt; xargs perintah pada Mac.
cpast
Saya selalu bisa menulis program untuk melakukan ini, tetapi
qaisjp

Jawaban:

1

Jawaban ini meminjam secara bebas dari beberapa komentar. Suruh temanmu lari

dir /b/s/a-d > dir.out

Kamu lari

find . -print > find.out

Normalisasi dir.out dan find.out:

  • Jadikan ujung ujung seragam (mis., NL atau CRLF),
  • Hapus awalan umum ( C:\Users\… dan ./ ),
  • Ubah garis miring terbalik ( \ ) ke garis miring ( / ) di dir.out, dan
  • Sortir kedua file.

Sekarang lakukan

comm dir.out find.out

(Anda mungkin ingin menyalurkannya ke pager seperti more atau less.) Output akan terdiri dari tiga kolom:

  1. Entri (nama file) hanya ada di file pertama ( dir.out ). Seharusnya tidak ada; jika ada, teman Anda menyertakan file yang tidak ia dapatkan dari Anda, atau Anda tidak sepenuhnya menormalkan file. (Oke, tergantung bagaimana teman Anda melakukannya dir perintah, itu dir.out mengajukan diri mungkin muncul di kolom 1.)
  2. Entri hanya ada di file kedua ( find.out ). Ini adalah nama-nama file yang Anda miliki di sistem Anda tetapi teman Anda tidak mendaftar. Dengan kata lain, ini adalah file yang ingin Anda hapus.
  3. Entri hadir di kedua file. Ini harus sama dengan dir.out.

Jika ada negatif palsu karena ketidaksesuaian kasus (‘A’ ≠ ‘a’), coba comm perintah lagi dengan a -f pilihan. Anda mungkin akan mengulangi sort dengan -f opsi juga.

Sekarang , ketik comm -13 dir.out find.out. Sintaksis yang sangat rusak otak ini berarti "Beri saya semua output normal kecuali untuk kolom 1 dan 3," dengan kata lain, kolom output 2 saja. Seperti ditunjukkan di atas, ini adalah daftar file yang ingin Anda hapus, jadi pipa itu menjadi xargs rm atau semacam itu.


Saya berasumsi bahwa Anda tidak memiliki karakter liar dan gila (seperti spasi, tanda kutip, ‘*’, ‘?’, ‘& lt;’, ‘|’, dll.) di nama file Anda. (Ini seharusnya tidak menjadi masalah; kamera cenderung menggunakan nama file seperti "DSCN1234.JPG".)

Scott
sumber
Dalam "Jadikan ujung garis seragam (mis., NL atau CRLF)," maksud Anda LF atau CRLF?
qaisjp
Bisakah Anda membantu saya di xargs? Saya sudah menampilkan file yang harus saya hapus ke todelete.out
qaisjp
Menemukannya: xargs rm < todelete.out Saya memastikan untuk keluar dari spasi dalam daftar nama file (TextWrangler menemukan dan mengganti "" dengan "\") sehingga berfungsi dengan baik.
qaisjp
@ qaisjp: Jika Anda mencari nilai byte 10 (desimal) (ekuivalen, 012 oktal atau 0x0A hex) di kebanyakan tabel ASCII, Anda akan melihatnya diidentifikasi sebagai Line Feed (LF). Saat dikirim ke printer mekanis, berorientasi karakter (seperti teletype), biasanya menyebabkan kertas menjadi satu baris maju tanpa memindahkan print head. Ketika dikirim ke terminal video, biasanya menyebabkan kursor bergerak ke bawah (atau isi layar untuk menggulir ke atas) tanpa menggerakkan kursor secara horizontal. (lanjutan)
Scott
@ qaisjp: Sebagian besar sistem operasi non-Unix yang digunakan saat ini menggunakan Carriage Return (CR) bersama-sama dengan LF di ujung baris (EOL). Pembuat Unix memutuskan bahwa fungsi CRLF ini cukup umum sehingga harus dikodekan dalam satu byte, dan bahwa fungsi LF jarang digunakan, sehingga mereka 'menciptakan' konsep konsep karakter baris baru yang melakukan fungsi CRLF akhir-line, dan dikodekan dengan nilai byte 10. Lihat en.wikipedia.org/wiki/Newline , dan unicode.org/charts/PDF/U0000.pdf (yang menunjukkan itu 10 keduanya LF dan NL). (lanjutan)
Scott
0

Anda bisa melakukannya GoodSync Connect (tidak berafiliasi). Biayanya menggunakan fitur ini, tetapi ada uji coba 30 hari selama itu berfungsi dalam versi gratis.

  1. Anda menginstal GoodSync di kedua sisi (ada Mac, Windows dan Linux versi).
  2. Anda mengatur GoodSync Connect yang membuat tautan direct-ish di mana info tentang direktori ditransfer melalui mediator, meskipun bukan file itu sendiri.
  3. Di sisi Anda, Anda menyiapkan pekerjaan Sinkronisasi.
  4. Pilih folder Dropbox dengan gambar.
  5. Teman Anda menyalin file dari DVD ke direktori. Pilih folder ini melalui GoodSync Connect.
  6. Anda memilih opsi Analisis dalam pekerjaan sinkronisasi. GS sekarang menetapkan bahwa kedua folder itu sama. Ini membuat file perbandingan referensi di kedua sisi. (Penting!)
  7. Kemudian teman Anda menghapus gambar yang tidak diinginkannya. (Atau, jika sudah melakukannya, ia menghapus konten folder tempat ia menyimpan semua gambar - kecuali folder _gsdata. Ia meletakkan folder yang dimodifikasi di sana.)
  8. Lakukan analisis, yang akan menunjukkan kepada Anda pratinjau.
  9. Jika OK, sinkronkan. GoodSync akan melakukan keajaibannya.

Catatan:

  • GoodSync akan mendeteksi pemindahan dan penggantian file dan folder dan akan berfungsi tanpa gangguan. Jadi tidak akan mencoba untuk memindahkan file. (Kecuali jika isi file telah dimodifikasi. Tapi itu sebabnya Anda menganalisa dulu!)
  • GoodSync akan menghapus file-file yang telah dihapus teman Anda. Mereka akan berada di tempat sampah.
  • Oh, dan lakukan backup sebelum ini. Ya, serius. Atau coba secara lokal.
  • Dan jika Anda tidak mempercayai teman Anda, nonaktifkan server GoodSync Connect setelah Anda selesai. Kalau tidak, teman Anda akan melihat semua file Anda. (Mungkin ada jalan keluarnya, tapi aku belum menemukannya.)
user 99572 is fine
sumber