隠しファイルを削除するMacターミナルスクリプトを持っている人はいますか?


10

私のカーステレオはUSBフラッシュドライブから音楽を再生できるので、iTunesプレイリストからMP3をコピーすることについて質問しました。それはうまくいきましたが、私のステレオはMP3ファイルを再生しませんでした。私は最終的に、Windows 7を実行している仕事用のコンピューターにフラッシュドライブを挿入し、問題を発見しました._[filename].mp3。フォーマット内の多数の隠しファイルも読み込まれました。

Windowsでは、属性に基づいてファイルを削除できることは知っています。ターミナルでも同じことができるのかと思っていました。おそらく、パラメータとしてボリュームを使用して実行できるスクリプトを使用しますか?


私はまったく同じ問題を抱えていました。._ファイルがそこにある場合、私のステレオは「不良メディア」と表示されますが、これは完全に間違っていました。それは適切に名前が付けられたファイルを再生しますが、各._ファイルについて不平を言いました。メディアが悪くないことを確認するのにしばらく時間がかかりました、カーステレオはそうでした!
エリック

しかし、それはそれが吸うステレオのせいではありません...笑。私はそれを私のWin7コンピュータに置いて音楽を仕事にかけ、それらすべてを見ました:それぞれ4KBの隠しファイルの束
Canadian Luke

カーステレオこれらのファイル無視する必要があります。あなたの場合、それらには必要な情報が含まれていません。しかし、それはどこでも同じ問題です。私のDLNAメディアプレーヤーは、閲覧中にこれらも表示します。
slhck

回答:


21

これらのファイルはOS Xでは非表示になっています。これは、これらのファイルがで始まるため.、Finderにデフォルトで表示されないためです。それ以外に、これらのファイルには特別な属性が設定されていません。

非常に単純なアプローチは、ドットとアンダースコアで始まるすべてのファイルを削除することです。

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

安全上の注意:-deleteどのファイルが削除されるかを確認せずにそれを実行してください。また、これをMac HD全体で行うのではなく、USBドライブでのみ行ってください。


いくつかの追加情報:これらのファイルは「リソースフォーク」と呼ばれ、削除したくない情報が含まれている場合があります。あなたのユースケースでは、それでも問題ありません。BlueHarvestを使用して、これらのファイルの作成を永久に無効にすることができます。それらのボリュームをクリーンアップすると主張するアプリもありますが、私はまだ試していませんし、ベータ版なので、注意して使用してください:隠しクリーナー


それを知らなかった...知っておくと良い。私が帰宅したら今夜それを試して、あなたの答えをマークします。おかげで
カナダのルーク

8

端末タイプで私(MacOS 10.6.8)のために働いたもう1つの解決策:

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

3

カーステレオでもまったく同じ問題がありました。MACOSによって作成されたドットファイルは音楽ファイルであるとプレイヤーが見なしているため、1ファイル/ 2は再生できません...そして、この投稿は本当に役に立ちました。

だから私は今マーベリックスのための改善された無料のソリューションで戻ってきます:

  1. AppleScriptスクリプトを実行するAutomatorアプリケーションを作成する
  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

すばらしい、ありがとう!OSX10.12.1で動作します。1 {input, parameters}行目から削除した場合(のみon run)。@Konrad:「スクリプトエディター」を開いて、前述の編集を行い、/ Applicationsにアプリとして保存しました。仕事が完了しました。私は何が起こっているのかを正確に見ることができるのが大好きです。これは他の無料のソリューションではトリッキーです。
ptim

ありがとう。私はあなたのスクリプトを試しました。Automatorアプリから実行してテストしたところ、ディスク選択ダイアログで中止オプションをクリックしても、sudoプロンプトとディスクの取り出しに失敗したことを示すメッセージが表示されました。修正する必要があると思います。Finderのサービスメニューから使用できるようにスクリプトをテストおよび構成する方法を説明することで、回答を少し進めることをお勧めします。
マークエディントン2017年

2

端末があなたを怖がらせた場合、Automatorを使用して同じことを行うこともできます。

Automatorワークフローで._ *。mp3を削除します。


rm -rf /を実行してEnterキーを押さない限り、ターミナルは私を怖がらせません:P Automatorを学びたいのですが、見栄えが良いです
Canadian Luke

ああ、そうです、それも良い考えです。
slhck

Get Selected Finder Itemsはここで役に立ちますか?
ダニエルベック

あんまり。私は誰か他の人のMacを使っていて、急いで仕事をしなければならなかった。
digitxp 2011

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.