是否有人拥有Mac Terminal脚本来删除隐藏文件?


10

我的汽车立体声音响可以播放USB闪存驱动器中的音乐,因此我问有关从iTunes播放列表复制MP3的问题。效果很好,但是我的立体声无法播放MP3文件。最终,我将闪存驱动器放入运行Windows 7的工作计算机中,然后发现了问题:._[filename].mp3还加载了许多格式的隐藏文件。

我知道在Windows中,您可以基于属性删除文件,我想知道您是否可以在Terminal中执行相同的操作?可能使用可以将Volume作为参数运行的脚本吗?


我有同样的问题。如果._文件在那里,我的立体声扬声器会说“ Bad Media”,那是完全错误的。它将播放正确命名的文件,但抱怨每个._文件。我花了一段时间来验证媒体还不错,汽车立体声音响才是!
艾瑞克(Eric)

但这不是立体声的错,而是……。我只是将它放在Win7电脑中,以便在工作中播放音乐,并看到了所有音乐:一堆每个4KB的隐藏文件
Canadian Luke

汽车立体声应该忽略那些文件。就您而言,它们不包含任何必要的信息。但是到处都是同样的问题。我的DLNA媒体播放器在浏览时也会显示这些内容。
slhck 2011年

Answers:


21

这些文件在OS X中是隐藏的,因为它们以开头,.因此默认情况下不在Finder中显示。除此之外,这些文件中没有设置特殊的属性。

一种非常简单的方法是删除所有以点和下划线开头的文件:

find /Volumes/<your-volume-name> -name '._*' -type f -delete

安全说明:运行该提示时不-delete查看将要删除的文件。而且永远不要在整个Mac HD上执行此操作,而只能在USB驱动器上执行此操作。


有关其他信息:这些文件称为“资源叉”,有时包含您不想删除的信息。在您的用例中,那应该没问题。您可以使用BlueHarvest永久禁用这些文件的创建。还有一个应用程序声称可以清理它们的体积,但是我还没有尝试过它,它是Beta版,因此请谨慎使用:Hidden Cleaner


没意识到...很高兴知道。今晚回家时,我会尝试一下,然后标记您的答案。谢谢
加拿大卢克,

8

在终端类型上适用于我的另一种解决方案(MacOS 10.6.8):

dot_clean "/Volumes/<your-volume-name>"

3

我的汽车立体声音响系统存在完全相同的问题,无法播放1个文件/ 2,因为播放器认为MAC OS创建的点文件是一个音乐文件...然后我发现这篇文章非常有用,谢谢。

因此,我现在返回针对Mavericks的改进的免费解决方案:

  1. 创建一个Automator应用程序以运行AppleScript脚本
  2. 使用此脚本:

    on run {input, parameters}
        try
            tell application "Finder" to set allDrives to the name of every disk whose local volume is true and startup is false
            set driveName to {choose from list allDrives with title "DiskCleaner" with prompt "Disk to Clean and Eject:" OK button name "Clean and Eject" cancel button name "Abort"} as text
            set getDriveIdentifier to "diskutil info " & quoted form of driveName & " | grep Ident | awk '{print $3}'"
            set driveIdentifier to do shell script getDriveIdentifier
            try
                do shell script "find /Volumes/" & quoted form of driveName & " -name '.DS_Store' -type f -delete"
                do shell script "find /Volumes/" & quoted form of driveName & " -name '.FBC*' -type f -delete"
                do shell script "find /Volumes/" & quoted form of driveName & " -name '._*' -type f -delete"
                do shell script "rm -rf /Volumes/" & quoted form of driveName & "/.{,_.}{fseventsd,Spotlight-V*,Trashes}"
                display notification "Disk Cleaned"
            on error
                try
                    do shell script "sudo find /Volumes/" & quoted form of driveName & " -name '.DS_Store' -type f -delete" with administrator privileges
                    do shell script "sudo find /Volumes/" & quoted form of driveName & " -name '.FBC*' -type f -delete" with administrator privileges
                    do shell script "sudo find /Volumes/" & quoted form of driveName & " -name '._*' -type f -delete" with administrator privileges
                    do shell script "sudo rm -rf /Volumes/" & quoted form of driveName & "/.{,_.}{fseventsd,Spotlight-V*,Trashes}" with administrator privileges
                    display notification "Disk Cleaned"
                on error
                    display notification "Can't Clean, Permission Denied"
                end try
            end try
            delay 1
            try
                do shell script "diskutil eject " & driveIdentifier
                display notification "Disk Ejected"
            on error
                display notification "Can't Eject, Disk in Use"
            end try
        on error
            display notification "No Disk to Clean and Eject"
        end try
    end run
    
  3. 例如,将应用程序另存为DiskCleaner.app

该脚本将要求您选择要清洁并弹出的USB磁盘。然后它将清理USB磁盘(如果当前凭据失败,请尝试使用管理员凭据),然后尽可能弹出。

当然,仍有一些地方需要改进,我自己做了这个脚本!

您还可以灵活地添加代码行以清理更多文件。

请享用!


这真的很有用,您是否考虑发布完整的Automator工作流程?
Konrad,2015年

太好了,非常感谢!如果我{input, parameters}从第1行删除(仅保留on run),则可以在OSX10.12.1上为我工作。@Konrad:我打开了“脚本编辑器”,进行了上述编辑,并作为应用程序保存到/ Applications;任务完成。我喜欢能够准确看到正在发生的事情,这与其他免费解决方案比较棘手。
ptim

谢谢。我试过你的剧本。当我从Automator应用程序运行对其进行测试时,我单击了磁盘选择对话框中的中止选项,但仍然出现sudo提示和有关无法弹出磁盘的消息。我认为这需要解决。我建议您在答案中走得更远,解释如何从Finder的服务菜单中测试和配置脚本以使其可用。
马克·爱丁顿

2

如果终端使您害怕,您还可以使用Automator完成相同的操作:

在Automator工作流程中删除._ *。mp3。


除非我执行rm -rf /并按Enter:P,否则Terminal不会吓我一跳,但我想学习Automator,看起来很酷
Canadian Luke

嗯,是的,这也是一个好主意。
slhck 2011年

“获取选定的查找器项目”在这里有用吗?
丹尼尔·贝克

并不是的。我当时在别人的Mac上,不得不匆忙工作。
2011年

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.