Alguém tem um script do Mac Terminal para remover arquivos ocultos?


10

O som do meu carro pode reproduzir músicas de unidades flash USB, por isso perguntei sobre a cópia de MP3s de uma lista de reprodução do iTunes . Isso funcionou bem, mas meu aparelho de som não tocava os arquivos MP3. Acabei colocando a unidade flash no meu computador de trabalho com o Windows 7 e encontrei o problema: vários arquivos ocultos no formato ._[filename].mp3também foram carregados.

Eu sei que no Windows, você pode excluir arquivos com base em atributos, e eu queria saber se você pode fazer o mesmo no Terminal? Possivelmente com um script que eu possa executar com o Volume como parâmetro?


Eu tive o mesmo problema. Se os arquivos ._ estivessem lá, meu aparelho de som diria "Bad Media", o que estava totalmente errado. Ele reproduzia os arquivos nomeados corretamente, mas reclamou de cada arquivo ._. Levei um tempo para verificar se a mídia não era ruim, o som do carro era!
Eric

Mas não é culpa do aparelho de som que é uma merda ... Lol. Eu só colocá-lo em meu computador Win7 para colocar música no no trabalho e vi todos eles: um monte de arquivos escondidos que eram 4KB cada
canadense Luke

O som do carro deve ignorar esses arquivos. No seu caso, eles não contêm nenhuma informação necessária. Mas é o mesmo problema em todos os lugares. O meu media player DLNA também mostra isso enquanto navega.
slhck

Respostas:


21

Esses arquivos estão ocultos no OS X porque começam com .e, portanto, não são mostrados no Finder por padrão. Não há nenhum atributo especial definido nesses arquivos além disso.

Uma abordagem muito simplista seria excluir todos os arquivos que começam com um ponto e um sublinhado:

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

Nota de segurança: execute isso sem -deletever quais arquivos serão removidos. E nunca faça isso em todo o seu Mac HD, apenas no seu drive USB.


Para mais informações: Esses arquivos são chamados de "Resource Forks" e, às vezes, contêm informações que você não deseja excluir. No seu caso de uso, isso deve ser bom. Você pode desativar permanentemente a criação desses arquivos usando o BlueHarvest . Há também um aplicativo que afirma limpar volumes deles, mas eu não tentei e é beta, então use com cuidado: Hidden Cleaner .


Não percebeu isso ... É bom saber. Vou tentar isso hoje à noite quando chegar em casa e marcar sua resposta. Obrigado
canadense Luke

8

Mais uma solução que funcionou para mim (MacOS 10.6.8) no tipo de terminal:

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

3

Eu tive exatamente o mesmo problema com o som do meu carro, 1 arquivo / 2 não pode ser reproduzido, porque o player considera que o arquivo de pontos criado pelo MAC OS é um arquivo de música ... Então achei este post realmente útil, obrigado.

Então, volto agora com uma solução aprimorada e gratuita para o Mavericks:

  1. Crie um aplicativo Automator para executar um script AppleScript
  2. Use este script:

    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. Salve o aplicativo como DiskCleaner.app, por exemplo

Este script solicitará que você escolha o disco USB para limpar e ejetar. Em seguida, ele limpa o disco USB (tenta com credenciais de administrador se houver falha nas atuais) e depois ejeta, se possível.

Claro que ainda há espaço para melhorias, eu fiz esse script por mim mesmo!

Além disso, você tem a flexibilidade de adicionar linhas de código para limpar mais arquivos.

Aproveitar!


Isso é realmente útil, você consideraria publicar o fluxo de trabalho completo do Automator?
21915 Konrad

Impressionante, muito obrigado! Funciona para mim no OSX10.12.1 se eu remover {input, parameters}da linha 1 (saindo apenas on run). @ Konrad: Eu abri o 'Script Editor', fiz a edição acima mencionada e salvei em / Applications como um aplicativo; tarefa concluída. Adoro poder ver exatamente o que está acontecendo, o que é mais complicado com outras soluções gratuitas.
PTIM

Obrigado. Eu tentei o seu script. Ao executá-lo no aplicativo Automator para testá-lo, cliquei na opção abortar na caixa de diálogo de seleção de disco e ainda recebi um prompt do sudo e uma mensagem sobre falha na ejeção do disco. Eu acho que precisa ser consertado. Sugiro que você vá um pouco mais longe na sua resposta, explicando como testar e configurar o script para ser usado em um menu de serviços no Finder.
Mark Edington

2

Você também pode usar o Automator para realizar a mesma coisa se o terminal assustar você:

Exclua ._ *. Mp3 em um fluxo de trabalho do Automator.


O terminal não me assusta menos que eu faço rm-rf / e pressione Enter: P Mas eu gostaria de aprender Automator, parece legal
canadense Luke

Ah, sim, é uma boa ideia também.
slhck

Obter itens selecionados do Finder é útil aqui?
Daniel Beck

Na verdade não. Eu estava no Mac de outra pessoa e tive que trabalhar apressadamente.
Digitpp

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.