Czy ktoś ma skrypt terminala Mac do usuwania ukrytych plików?

10

Moje radio samochodowe może odtwarzać muzykę z pamięci flash USB, więc zapytałem o kopiowanie plików MP3 z listy odtwarzania iTunes . To działało dobrze, ale moje stereo nie odtwarzało plików MP3. W końcu umieściłem dysk flash na komputerze z systemem Windows 7 i znalazłem problem: ._[filename].mp3załadowano także kilka ukrytych plików w tym formacie .

Wiem, że w systemie Windows możesz usuwać pliki na podstawie atrybutów i zastanawiałem się, czy możesz zrobić to samo w Terminalu? Być może ze skryptem, który mogę uruchomić z woluminem jako parametrem?

Kanadyjczyk Luke
źródło
Miałem dokładnie ten sam problem. Jeśli pliki ._ tam były, mój stereo powiedziałby „Bad Media”, co było całkowicie błędne. Odtwarza pliki o prawidłowych nazwach, ale narzeka na każdy plik ._. Zajęło mi trochę czasu, aby sprawdzić, czy media nie są złe, samochodowy system stereo był!
Eric,
Ale to nie wina stereo, że jest do kitu ... Lol. Po prostu włożyłem go do komputera z Win7, żeby włączyć muzykę w pracy, i zobaczyłem je wszystkie: kilka ukrytych plików o rozmiarze 4KB każdy
Kanadyjczyk Luke
Car stereo powinien zignorować te pliki. W twoim przypadku nie zawierają one żadnych niezbędnych informacji. Ale wszędzie jest ten sam problem. Mój odtwarzacz multimediów DLNA pokazuje je również podczas przeglądania.
slhck,

Odpowiedzi:

21

Pliki te są ukryte w OS X, ponieważ zaczynają się od .i dlatego nie są domyślnie wyświetlane w Finderze. W tych plikach nie ma specjalnego atrybutu.

Bardzo uproszczonym podejściem byłoby usunięcie wszystkich plików, które zaczynają się od kropki i podkreślenia:

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

Uwaga dotycząca bezpieczeństwa: uruchom to bez, -deleteaby zobaczyć, które pliki zostaną usunięte. I nigdy nie rób tego na całym komputerze Mac HD, tylko na dysku USB.


Aby uzyskać dodatkowe informacje: Te pliki są nazywane „Widelcami zasobów” i czasami zawierają informacje, których nie chcesz usunąć. W twoim przypadku powinno być dobrze. Możesz trwale wyłączyć tworzenie tych plików za pomocą BlueHarvest . Istnieje również aplikacja, która twierdzi, że czyści ich woluminy, ale nie wypróbowałem jej i jest w wersji beta, więc używaj ostrożnie: Hidden Cleaner .

slhck
źródło
Nie zdawałem sobie sprawy, że ... Dobrze wiedzieć. Spróbuję tego dziś wieczorem, kiedy wrócę do domu, a następnie zaznaczę twoją odpowiedź. Dzięki
kanadyjski Łukasz Łukasz
8

Jeszcze jedno rozwiązanie, które zadziałało dla mnie (MacOS 10.6.8) w typie terminala:

dot_clean "/Volumes/<your-volume-name>"
shershen
źródło
3

Miałem dokładnie ten sam problem z moim samochodowym zestawem stereo, 1 plik / 2 jest niemożliwy do odtworzenia, ponieważ odtwarzacz uważa, że ​​plik kropkowy utworzony przez MAC OS jest plikiem muzycznym ... Dzięki temu ten post był bardzo przydatny, dzięki.

Wracam teraz z ulepszonym i bezpłatnym rozwiązaniem dla Mavericks:

  1. Utwórz aplikację Automator, aby uruchomić skrypt AppleScript
  2. Użyj tego skryptu:

    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. Zapisz na przykład aplikację jako DiskCleaner.app

Ten skrypt poprosi Cię o wybranie dysku USB do wyczyszczenia i wysunięcia. Następnie wyczyści dysk USB (spróbuje z poświadczeniami administratora, jeśli nie powiedzie się z bieżącymi), a następnie usunie, jeśli to możliwe.

Oczywiście jest jeszcze miejsce na ulepszenia, zrobiłem ten skrypt dla siebie!

Masz również swobodę dodawania wierszy kodu do czyszczenia większej liczby plików.

Cieszyć się!

RSelec
źródło
Jest to naprawdę przydatne, czy możesz rozważyć opublikowanie pełnego przepływu pracy Automatora?
Konrad
Świetnie, wielkie dzięki! Działa dla mnie na OSX10.12.1, jeśli usunę {input, parameters}z linii 1 (pozostawiając tylko on run). @Konrad: Otworzyłem „Script Editor”, dokonałem wyżej wspomnianej edycji i zapisałem w / Applications jako aplikację; Zadanie wykonane. Uwielbiam widzieć dokładnie, co się dzieje, co jest trudniejsze w przypadku innych bezpłatnych rozwiązań.
ptim
Dzięki. Próbowałem twojego skryptu. Kiedy uruchomiłem go z aplikacji Automator, aby go przetestować, kliknąłem opcję przerwania w oknie dialogowym wyboru dysku i nadal otrzymałem monit sudo oraz komunikat o niepowodzeniu wysunięcia dysku. Myślę, że to trzeba naprawić. Sugeruję, abyś poszedł nieco dalej w swojej odpowiedzi, wyjaśniając, jak przetestować i skonfigurować skrypt, aby był dostępny z menu usług w Finderze.
Mark Edington
2

Możesz również użyć Automatora, aby osiągnąć to samo, jeśli terminal Cię przeraża:

Usuń plik ._ *. Mp3 w przepływie pracy Automatora.

digitxp
źródło
Terminal mnie nie przeraża, chyba że zrobię komendę rm -rf / i naciśniesz Enter: P Ale chciałbym nauczyć się Automatora, wygląda fajnie
Kanadyjczyk Łukasz
Ach, tak, to także dobry pomysł.
slhck,
Czy przydatna jest opcja Zdobądź wybrane elementy Findera?
Daniel Beck
Nie całkiem. Byłem na czyimś Macu i musiałem pracować pospiesznie.
digitxp