Bagaimana cara mengubah nama file / folder secara rekursif untuk menjadikannya Windows-friendly?

11

Saya memiliki banyak file di kotak Ubuntu, yang memiliki berbagai karakter dalam nama file mereka yang tidak diterima Windows (kebanyakan ":" dan "*", tetapi mungkin yang lain).

Apa cara paling sederhana untuk mengganti nama semua ini dan pindah ke mesin Windows? Tidak apa-apa untuk mengganti karakter ini dengan sesuatu seperti "[titik dua]" dan "[tanda bintang]".

RomanSt
sumber
1
Anda harus menghindari nama-nama seperti itu bahkan di Linux (terutama *).
cYrus
4
@ cYrus Tergantung pada bagaimana Anda menangani file. Saya membayangkan itu hanya masalah dengan scripting dan di shell. Saya menggunakan OS X dan satu-satunya karakter terlarang adalah :, yang cukup buruk. Memberi nama dokumen setelah isinya berguna, dan jika nama artikel diakhiri dengan pertanyaan, maka sebaiknya nama filenya.
Daniel Beck
@ cYrus dan saya melakukannya, dalam perangkat lunak saya, tetapi beberapa perangkat lunak telah ditulis oleh orang-orang yang tidak. Misalnya, qmail menggunakan: di hampir setiap nama file yang dibuatnya.
RomanSt
@ Daniel Beck: Tentu, tetapi sayangnya memiliki sistem file yang mendukung nama-nama seperti itu tidak cukup karena Anda dapat menggunakan program yang mengacaukan semuanya. Saya bahkan tidak menggunakan spasi.
cYrus
2
@Steven pertanyaan bagus! Saya pikir Windows akan sedikit lebih berguna, karena mungkin saja seseorang menerima file pada Windows dan harus memperbaikinya pada platform itu.
Peltier

Jawaban:

4

Lihatlah Glindra rename dan detox .

Utilitas file Glindra dapat diinstal pada Windows atau Linux. Contoh pembersihan nama file di Windows:

rena *.* -portable

rena *.* -safe
  • -Safe
    Maps memimpin tanda hubung (tanda hubung) ke garis bawah.
    Runtuh spasi.
    Memetakan karakter yang bermasalah seperti * ?: [] "<> | () {} untuk menggarisbawahi.
  • -portable
    Melakukan operasi pembersihan yang sama seperti -safe, dan tambahan:
    Memetakan semua karakter 8-bit dari bagian atas abjad Latin 1 ke karakter fallback 7-bit yang masuk akal.
    Memetakan karakter kutipan tunggal '`´ ke garis bawah.

Sumber: Memperbaiki Nama File Unix / Linux / POSIX: Karakter Kontrol (seperti Newline), Leading Dashes, dan Masalah Lain

Dijeda sampai pemberitahuan lebih lanjut.
sumber
Halaman itu menunjukkan salinan 404. Google di-cache .
Daniel Beck
Itu adalah kata-kata kasar yang luar biasa dari David Wheeler! Terutama setelah saya baru saja menghancurkan keyboard saya setelah mencoba untuk cd ke direktori yang bernama JungleDisk "~ \ irina". Ingin menebak apakah penyelesaian tab berhasil? ...
RomanSt
1
Detox adalah untuk membuat file Windows ramah-Unix, bukan sebaliknya.
endolith
3
@DennisWilliamson - Sepertinya glindra (untuk Windows) tidak dapat mengganti nama karakter dengan nama file yang tidak valid. G:\spc>rena.exe -safe -portable *.txtkeluaran[FATAL-ERROR] Filename syntax error: aa:a.txt
Steven
1
Perhatikan perubahan sintaks ketika pergi ke Linux, yaitu rena '*.*' -portable, dan jika Anda ingin itu menggunakan sesuatu seperti rena '***/*.*' -portabledi Linux. Dan saya percaya penggantian nama harus dilakukan di Linux, bukan pada Windows.
holroy
4

Coba Recuva .

Ini adalah satu-satunya utilitas Windows yang saya temukan yang menangani nama file yang bukan Windows.

Aktifkan Pindai file yang tidak dihapus (untuk pemulihan dari disk yang rusak atau diformat ulang) dan pindai folder Anda. Saat mengembalikan, aktifkan Pulihkan struktur folder . Recuva akan secara efektif "menyalin" seluruh direktori ke lokasi lain sambil "santitisasi" nama file yang tidak ramah.

Steven
sumber
1

Tanpa berada di Linux dan tanpa menguji apa pun, saya percaya seseorang dapat menggunakan satu-liner seperti yang di bawah ini.

Untuk mengubah satu karakter:

find . -type f -exec rename 's/:/\[colon\]/g' {} +
find . -type f -exec rename 's/\*/\[asterisk\]/g' {} +

Dan akhirnya untuk menghapus semua karakter non-alfanumerik:

find . -type f -exec rename 's/[^A-Za-z0-9._]//g' {} +
harrymc
sumber
Harap dicatat bahwa ini perlu diperluas dengan semua karakter ilegal windows lainnya, yaitu<>:"/\|?*
holroy
0

Jika file Anda sudah pada volume NTFS, tampaknya menjalankan chkdisk dari Windows "menyelesaikan" masalahnya. Sayangnya, sepertinya ia melakukannya dengan menghapus file yang menyinggung.

Peltier
sumber
0

Saya berhasil dengan kombinasi dari dua jawaban pertama, ditambah pyRenamer (GUI). Di Linux, saya menggunakan pyRenamer untuk menciutkan spasi dalam nama folder (direktori) - dengan mengganti ruang dengan apa-apa - sehingga program lain (Glindra mengubah nama) bekerja secara rekursif (seseorang dapat menempatkan garis bawah). Dari file, saya juga mengeluarkan beberapa karakter atau kata yang dapat diterima windows untuk menghemat ruang, dan juga ruang yang runtuh di nama file. Saya kemudian berlari rena untuk mengeluarkan karakter non-windows, disimpan ke flash drive, dan kemudian menggunakan Recuva untuk 'mengembalikan' ke folder di bawah Windows. Recuva menunjukkan jika path file terlalu panjang (dan itu juga menghilangkan karakter non-windows). Saya belum menemukan alat yang memeriksa jalur nama file untuk melihat apakah mereka berada di bawah batas maksimum Windows 255 (atau katakan 240 untuk memungkinkan beberapa kelonggaran).

Vitex
sumber