Mengosongkan sampah drive USB

41

Saya memiliki drive USB yang terhubung ke Mac saya. Apa yang saya temukan .Trashestidak dikosongkan saat tempat sampah kosong (klik kanan ikon Tempat Sampah dan jalankan "Empty Trash") untuk drive USB

Apa yang salah? Apakah ada cara lain untuk mengosongkan sampah drive USB?

prosseek
sumber
9
Menarik, mengosongkan tempat sampah selalu berhasil melakukannya untuk drive USB saya. Satu-satunya keluhan saya adalah seringnya saya hanya ingin mengosongkan sampah pada drive USB saya dan tidak harus melakukannya untuk setiap drive pada sistem.
Matthew Frederick
4
@Matthew tryrm -R /Volumes/volumename/.Trashes/$UID
Gordon Davisson
@ Gordon Sempurna, terima kasih! Membuat Applescript satu-baris untuk menjalankan perintah dan ini adalah beberapa penekanan tombol QuickSilver kapan saja.
Matius Frederick

Jawaban:

36

Mungkin saja ada file di beberapa tempat sampah pengguna lain . The .Trashesfolder di bagian atas setiap volume memiliki subfolder untuk setiap pengguna yang berbeda, dengan nomor ID pengguna (misalnya pengguna 502 tong sampah di .Trashes/502).
Anda dapat melihat apakah itu sendiri menggunakan perintah seperti ini (ganti VolumeNamedengan nama drive Anda):

ls -la /Volumes/VolumeName/.Trashes/
total 0
d-wx-wx-wt@  3 _unknown  _unknown   102 10 Feb 18:15 .
drwxrwxrwx@ 21 root      wheel      782 13 Feb 14:17 ..
drwx------@ 35 _unknown  _unknown  1190 13 Feb 14:18 502

Seperti yang Anda lihat, pada .Trashesfolder disk USB saya ada sub folder bernama 502, dimiliki oleh ID pengguna 502 (untuk referensi, ID pengguna saya saat ini adalah 501). Karena pengguna ini tidak ada di sistem saya, saya melihatnya sebagai _unknown, dan pengguna saya tidak bisa melihat ke dalamnya, juga tidak menghapusnya. Untuk melihat ke dalam folder itu, kita perlu melakukannya sebagai administrator (yaitu menggunakan sudo).

Jika Anda yakin ingin melakukannya, Anda dapat menghapus sampah semua orang dengan menghapus seluruh .Trashesfolder dengan perintah seperti:

sudo rm -R /Volumes/volumeName/.Trashes

Peringatan: seperti apa pun yang melibatkan sudo( "lakukan sebagai pengguna super" , yaitu administrator sistem) dan rm -R, gunakan ini dengan hati-hati. Jika Anda salah mengetik, itu bisa memiliki ... konsekuensi yang tidak menyenangkan .

Gordon Davisson
sumber
The "mungkin di Sampah orang lain" adalah persis masalah aku berlari ke dalam. Ini harus diiklankan lebih baik!
cdeszaq
Menambahkan -f beralih ke perintah akan memaksa aksi. Mengganti "volumename" dengan "*" akan memungkinkan Anda menghubungkan beberapa drive USB dan mengosongkan semua Trash pada semuanya secara bersamaan. Tidak perlu terhubung 1-per-1 dan kemudian lakukan kembali.
Danijel-James W
Mungkin berbahaya untuk menjalankan perintah yang melibatkan keduanya sudo rmdan /Volumes/*/something, karena itu dapat memengaruhi bahkan drive sistem Anda, dan kesalahan ketik bisa berakibat buruk.
gerlos
8

Perilaku biasa:
Ketika Anda menghapus sesuatu dari drive USB, itu dipindahkan ke .Trashesfolder pada volume itu. Saat dicolokkan ke komputer Anda, barang yang dihapus akan muncul di tempat sampah Anda dengan yang lainnya.

Ketika Anda mencabutnya, item yang Anda hapus dari drive itu tidak akan lagi muncul di tempat sampah Anda SAMPAI Anda pasang lagi. Lalu, Anda bisa mengosongkan tempat sampah. Itu benar - benar akan menghapusnya dari drive itu.

Jika itu tidak terjadi untuk Anda, inilah saran saya:

  1. Pilih drive di bilah samping Finder Anda.
  2. Tanpa memilih yang lain, tekan cmd-i(atau gunakan item menu FileGet Info).
  3. Gunakan Sharing and Permissionsbagian dari jendela itu untuk memberikan Everyoneizin Read and Write.
Nathan Greenstein
sumber
Ini harus diterima
zsitro
7

Saya tidak tahu apakah ini jawaban terbaik, tetapi setidaknya ini adalah jawaban yang berfungsi.

Buka baris perintah, cd ke volume USB (/ Volume / USB untuk kasus saya), dan ketik:

/bin/rm -rf ./Trashes/* works fine with me.
prosseek
sumber
Ini akan mengharuskan pengguna harus pergi ke volume spesifik setiap kali. Dengan membangun balasan Anda, saya telah membuat skrip Bash dan solusi AppleScript.
Danijel-James W
2

2 Solusi. 1 menggunakan Bash yang lain menggunakan Bash yang dibungkus AppleScript.

Solusi # 1

  1. Buat AppleScript baru dengan /Applications/Utilities/AppleScript Editor
  2. Ketikkan kode berikut:

    lakukan skrip shell "rm -rf /Volumes/*/.Trashes/*" dengan hak administrator

  3. Simpan file ke tempat yang nyaman dan jalankan kapan pun Anda perlu membersihkan Sampah USB
  4. Ini dapat dilakukan dengan mengklik dua kali

CATATAN: Ini akan mengosongkan Trash untuk semua volume yang terhubung termasuk hard disk internal Anda. Jika Anda telah menghubungkan 5 drive USB dan hard disk Firewire, itu akan mengosongkan tempat sampah untuk semuanya.


Solusi # 2

  1. Jalankan editor teks favorit Anda (milik saya adalah nano)
  2. Rekatkan kode berikut ke dalam editor teks Anda dan simpan file tersebut

    #! / bin / bash
    sudo rm -rf /Volumes/*/.Trash/*

  3. Simpan file ke tempat yang nyaman dengan ekstensi .shdan kemudian jalankan dengan chmod +x {filename}.shdari Terminal

  4. Jalankan itu dengan ./{filename}.sh

CATATAN: Catatan yang sama seperti di atas. Ini dapat dieksekusi dari Terminal.

Danijel-James W
sumber
2

Saya menggunakan skrip ini AppleScript, simpan sebagai Aplikasi:

on open these_volumes
    set t_id to user ID of (system info)
    repeat with i in these_volumes
        if (kind of (info for i without size)) is "Volume" then
            set tPath to (POSIX path of i) & ".Trashes/" & t_id
            do shell script "/bin/rm -Rf  " & (quoted form of tPath) & "/*"
        end if
    end repeat
end open

Seret / Jatuhkan Volume pada aplikasi.

Skrip ini menghapus item dari folder trash (ID pengguna) Anda di volume. jika pengguna lain menggunakan volume skrip ini tidak akan menghapus item dari folder tempat sampah mereka, sebaliknya skrip akan memerlukan kata sandi administrator untuk melakukan itu.


Jika Anda ingin mengeluarkan volume setelah mengosongkan sampah, gunakan skrip ini.

on open these_volumes
    set t_id to user ID of (system info)
    set volToEject to {}
    repeat with i in these_volumes
        if (kind of (info for i without size)) is "Volume" then
            set tPath to (POSIX path of i) & ".Trashes/" & t_id
            do shell script "/bin/rm -Rf  " & (quoted form of tPath) & "/*"
            set end of volToEject to contents of i
        end if
    end repeat
    if volToEject is not {} then tell application "Finder" to eject volToEject
end open
Tony_kenya
sumber
Untuk membuat applescript berfungsi, cukup seret perangkat yang terhubung atau drive ke aplikasi AppleScript dan lepaskan. Anda dapat membuat alias di dok di sebelah tempat sampah biasa untuk kenyamanan, dengan menyeret dan menjatuhkan ikon Aplikasi ke dok samping.
Tony_kenya