有没有人有可以删除隐藏文件的 Mac 终端脚本?

有没有人有可以删除隐藏文件的 Mac 终端脚本?

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

我知道在 Windows 中,您可以根据属性删除文件,我想知道您是否可以在终端中执行相同操作?是否可以使用以卷为参数运行的脚本?

答案1

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

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

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

安全注意事项:运行该程序,-delete看看哪些文件会被删除。千万不要在你的整个 Mac HD 上这样做,仅有的在您的 USB 驱动器上。


一些其他信息:这些文件称为“资源分支”,有时包含您不想删除的信息。不过,在您的用例中,这应该没问题。您可以使用以下方法永久禁用这些文件的创建蓝色丰收还有一个应用程序声称可以清理大量垃圾,但我还没有尝试过,而且它还在测试阶段,所以请谨慎使用:隐藏清洁器

答案2

在终端类型中对我有用的另一个解决方案(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 磁盘(如果当前凭据失败,则尝试使用管理员凭据),然后如果可能则弹出。

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

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

享受!

答案4

该脚本用于删除USB驱动器中的隐藏文件或目录。 https://github.com/ulasyurtsever/delete-hidden-files-or-directories

相关内容