Mengkompres folder pada mac, tanpa .DS_Store


63

Apakah ada cara untuk menyingkirkan .DS_Store saat mengompresi folder pada mac?

Saya bekerja pada mac dan mengirim pekerjaan ke klien dalam format zip, tetapi selalu dipertanyakan pada folder .DS_Store di dalamnya. Tampaknya tidak terhindarkan kecuali saya membuka folder pada Windows lalu menghapus .DS_Store dan kompres di sana. Ini cukup merepotkan.

Apakah ada pekerjaan yang mudah di sekitar?

Jawaban:


108

Jika Anda tidak keberatan melompat turun ke terminal, maka ini sangat mudah. Jika Anda berada di /Users/username, yang merupakan direktori $ HOME Anda dan ada subdirektori bernama foo yang ingin Anda zip tapi abaikan semua file .DS_Store, lalu lakukan hal berikut:

zip -r foo.zip foo -x "*.DS_Store"

Untuk menafsirkan ini, kami menjalankan zip yang dapat dieksekusi dengan parameter / argumen berikut:

  • -r untuk secara rekursif memasukkan semua direktori di bawah target yang ingin kita zip.
  • foo.zip adalah nama arsip zip yang kami buat
  • foo adalah direktori target yang ingin kita zip
  • -x "*.DS_Store" mengecualikan semua file yang jalurnya berakhir dengan string ".DS_Store"

Tidak diperlukan aplikasi pihak ketiga yang konyol atau Anda tidak perlu membuang file .DS_Store Anda sama sekali - hanya mengandalkan semua kebaikan alat unix yang dibangun langsung ke OSX / Darwin.


1
Ini sempurna, terima kasih. Karena minat, bagaimana saya mengecualikan ujung multi jalur? Sesuatu seperti zip -r foo.zip foo -x "* .DS_Store, * .svn"?
danixd

5
Gunakan argumen -x dua kali: zip -r foo.zip foo -x *.DS_Store -x *.svn*
whaley

Bagaimana Anda mengecualikan Ikon-file yang dibuat OSX untuk ikon folder khusus? Mereka memiliki baris baru atau sesuatu seperti itu di akhir nama file.
Daniel Beck

Saya tidak tahu seperti apa nama-nama file itu sehingga saya tidak bisa memberikan panduan nyata di sini.
whaley

1
@Daniel Beck - jadi tetap gunakan CleanArchiver dan jangan membajak bagian komentar dari pertanyaan orang lain dan menerima jawaban untuk panggilan solusi yang lebih rendah ketika jelas bekerja untuk poster asli? Jawaban atas pertanyaan Anda, cukup luar biasa, adalah -x 'Icon?'. "?" karakter dalam pola globbing file berarti "cocok dengan satu karakter wildcard", jadi itu akan cocok terlepas dari apa "?" sungguh. Anda dapat mengecualikan file ad-hoc dalam bentuk apa pun dengan hanya menambahkan lebih banyak argumen -x. zipsangat fleksibel. Menurut Anda, apa utilitas pihak ketiga ini benar-benar digunakan di belakang layar?
whaley

5

Anda dapat membuat aplikasi automator yang menerima folder sebagai input dan menghasilkan file zip dari isi folder tanpa cacat.

Simpan aplikasi ini di / Users / you / Applications dan kemudian seret ke bilah alat pencari Anda. Kemudian Anda dapat menarik folder ke aplikasi dari jendela pencari apa pun.

Buat aplikasi automator

Tambahkan langkah ' dapatkan item pencari yang dipilih '. Dan juga menambahkan langkah ' jalankan skrip shell ' dengan opsi ' Masukan masukan ' diatur ke ' sebagai argumen '.

Tambahkan langkah alur kerja

Naskah:

name=("$@")
cd "$name"
zipFileName=`basename "$name"`
zip "${zipFileName}.zip" -r ./* \
    -x */.DS_Store \
    -x */.git \
    -x */.svn \
    -x */.idea \
    -X */__MACOSX
mv "${zipFileName}.zip" ../

Menerima folder sebagai input dan menghasilkan zipfile dengan nama folder tersebut.


Itu bagus! Bagaimana saya bisa memodifikasinya sehingga saya bisa menyeret beberapa file, nama output harus mengandung dirname;
unbreak

2
@ unbreak saya tidak tahu. Saya tidak lagi memiliki mac ;-)
Michiel Roos

3

Saya tidak berpikir ada cara untuk melakukannya secara default, tetapi ada dua cara yang dapat saya pikirkan untuk mencapai apa yang Anda inginkan.

Pertama, saya menemukan aplikasi gratis bernama FolderWasher . Jatuhkan folder pada aplikasi dan itu akan menghapus file .DS_Store dan zip itu untuk Anda.

Atau (dan berpotensi lebih baik daripada perangkat lunak pihak ketiga) Anda dapat menggunakan Automator untuk membersihkan arsip setelah pembuatan. Sebenarnya sudah ada tindakan yang dibuat untuk ini. Itu hanya satu langkah ekstra, dan Anda dapat menyeret tindakan ke Finder sehingga mudah ditemukan.


3

Jika Anda sudah membuat arsip zip (atau ingin cara sederhana menghapus kreasi pos zip .DS_Store), ini akan menghapus semua file .DS_Store di jalur apa pun di arsip zip:

zip -d archive.zip "*/*.DS_Store"

Jawaban paus masih jelas yang terbaik, karena bisa diasingkan dan dilupakan. Dalam kasus saya, saya membuat zip dari Archive Utility, kemudian menyadari bahwa saya harus menghapus ini.


2

Buka Terminal (/Applications/Utilies/Terminal.app) dan jalankan perintah berikut untuk menampilkan file tersembunyi:

defaults write com.apple.finder AppleShowAllFiles TRUE && killall Finder

Untuk menyembunyikan file yang tersembunyi cukup jalankan:

defaults write com.apple.finder AppleShowAllFiles FALSE && killall Finder

Anda dapat menghapus file .DS_Store sama seperti file lainnya tanpa menyebabkan kerusakan pada direktori Anda. Seperti yang dinyatakan di wikipedia, "DS_Store (Desktop Services Store) adalah file tersembunyi yang dibuat oleh sistem operasi Mac OS X Apple Inc. untuk menyimpan atribut khusus folder seperti posisi ikon atau pilihan gambar latar."



2

Jika Anda menjalankan ini di Terminal, ini menghentikannya dihasilkan secara otomatis saat Anda membuat folder, Anda dapat mengaktifkannya kembali jika Anda memilih.

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

Anda kemudian dapat menggunakan contoh @Penang (di atas) untuk memverifikasi jika file tidak dibuat lagi. Saya harus mengunggah file zip dan setiap folder memiliki file itu di dalamnya dan ini membantu saya.


0

Ada penjelasan tentang apa itu, dan bagaimana cara menghapusnya di situs bantuan adobe dari semua tempat.

Mereka adalah file tersembunyi yang digunakan untuk menyimpan konfigurasi folder (seperti posisi ikon, warna, latar belakang folder, dan posisi gulir. Sayangnya sepertinya tidak ada cara untuk menghentikannya dibuat secara permanen, meskipun apel mengakui bahwa mereka dapat menyebabkan masalah bagi beberapa pengguna.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.