清空USB驱动器的垃圾


41

我有一个USB驱动器插入我的Mac。.Trashes当为USB驱动器清空垃圾箱(右键单击“ 垃圾箱”图标并运行“空垃圾箱”)时,我发现的内容没有被清空

可能是什么问题?还有其他方法可以清空USB驱动器的垃圾吗?


9
有趣的是,为我的USB驱动器清空垃圾总是成功的。我对此的唯一抱怨是,通常我只想清空USB驱动器上的垃圾,而不必对系统上的每个驱动器都这样做。
马修·弗雷德里克

4
@Matthew tryrm -R /Volumes/volumename/.Trashes/$UID
Gordon Davisson

@高登完美,谢谢!创建了一个单行的Applescript来运行命令,并且随时都需要几次QuickSilver击键。
马修·弗雷德里克

Answers:


36

其他用户的垃圾箱中可能有文件。的.Trashes在每卷的顶部文件夹具有用于每个不同的用户的子文件夹,由用户ID号(例如,用户502的垃圾是在.Trashes/502)。
您可以使用以下命令查看它是否自己(VolumeName用驱动器名称替换):

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

如您所见,在我的USB磁盘.Trashes文件夹中,有一个名为的子文件夹502,由用户ID 502拥有(供参考,我当前的用户ID为501)。由于该用户在我的系统上不存在,因此将其显示为_unknown,并且用户无法查看其内部,也无法删除它。要查看该文件夹,我们需要以管理员身份进行操作(即使用sudo)。

如果确定要删除,可以使用以下命令删除整个文件夹,以删除所有人的垃圾箱.Trashes

sudo rm -R /Volumes/volumeName/.Trashes

警告:与涉及任何内容sudo“以超级用户身份执行”,即系统管理员)和一样rm -R,请谨慎使用。如果输入错误,可能会导致... 令人不愉快的后果。


“可能在别人的垃圾箱中” 正是我遇到的问题。这应该是更好的广告!
cdeszaq 2012年

将-f开关添加到命令将强制执行该操作。用“ *”替换“ volumename”将使您可以连接多个USB驱动器,并同时清空所有USB驱动器上的垃圾箱。不必先连接1比1再重新连接。
Danijel-James W

运行包含sudo rm和 的命令可能很危险/Volumes/*/something,因为它甚至可能影响您的系统驱动器,而且输入错误可能会造成严重后果。
gerlos

8

通常的行为:
从USB驱动器上删除某些内容时,该内容会移动到.Trashes该卷上的文件夹中。插入计算机后,删除的物品将与其他所有物品一起出现在垃圾桶中。

拔出电源后,从该驱动器中删除的项目将不再显示在垃圾箱中,直到您再次插入电源。然后,您可以清空垃圾箱。它将真正从该驱动器中删除它们。

如果那不是您的事情,这是我的建议:

  1. 在Finder侧边栏中选择驱动器。
  2. 不选择其他任何东西,请按cmd-i(或使用菜单项FileGet Info)。
  3. 使用该Sharing and Permissions窗口的部分Everyone将权限授予Read and Write

这应该被接受
zsitro 2014年

7

我不知道这是最好的答案,但至少它是有效的答案。

打开命令行,cd到USB卷(对于我的情况为/ Volumes / USB),然后键入:

/bin/rm -rf ./Trashes/* works fine with me.

这将要求用户每次必须转到特定的音量。根据您的答复,我提出了一个Bash脚本和AppleScript解决方案。
Danijel-James 2013年

2

2解决方案。1使用Bash,另一种使用包装在AppleScript中的Bash。

解决方案1

  1. 使用以下命令创建新的AppleScript /Applications/Utilities/AppleScript Editor
  2. 输入以下代码:

    使用管理员权限执行shell脚本“ rm -rf /Volumes/*/.Trashes/*”

  3. 将文件保存到方便的地方,并在需要清除USB垃圾桶时运行它
  4. 可以通过双击来执行

注意:这将清空所有连接的卷(包括内部硬盘)的回收站。如果您已连接5个USB驱动器和一个Firewire硬盘,它将清空所有这些驱动器的垃圾。


解决方案#2

  1. 启动您喜欢的文本编辑器(我的是nano)
  2. 将以下代码粘贴到文本编辑器中,然后保存文件

    #!/ bin / bash
    sudo rm -rf / Volumes / * /。垃圾桶/ *

  3. 将文件保存到扩展名方便的位置.sh,然后使其可chmod +x {filename}.sh从终端执行

  4. 与运行 ./{filename}.sh

注意:与上述相同。这可以从终端执行。


2

我使用此脚本AppleScript,将其另存为Application:

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

在应用程序上拖放卷。

此脚本从卷上的回收站(用户ID)文件夹中删除项目。如果其他用户使用该卷,则此脚本不会从其回收文件夹中删除项目,否则该脚本将需要管理员密码才能执行此操作。


如果要在清空垃圾桶后弹出该卷,请使用此脚本。

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

要使applescript工作,只需将连接的设备或驱动器拖到AppleScript应用程序中并拖放即可。为了方便起见,可以通过将应用程序图标拖放到侧面基座中的常规垃圾箱旁边的基座中创建别名。
Tony_kenya 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.