Como rastrear a localização do arquivo?

1

Eu quero rastrear os caminhos de pastas específicas no meu sistema da maneira mais simples e eficiente possível. Minha primeira suposição foi que eu poderia conseguir isso usando links simbólicos, mas vejo informações contraditórias sobre como um symlink funciona.

Muitas perguntas foram feitas sobre como obter o caminho para um destino de link simbólico (com respostas como "use greadlink "). Mas não consigo encontrar nenhuma pergunta sobre como obter o caminho de destino atual , já que todas as respostas que encontrei parecem apenas obter o caminho de destino original .

Mas enquanto eu procuro uma maneira de encontrar o caminho de destino atual, todas as respostas parecem estar dizendo que isso não é possível, já que depois que o alvo se moveu, o link simbólico se torna "quebrado". Eu não entendo porque eles consideram esse link quebrado. Se eu fizer o link simbólico B para o alvo A e então o mv A para um novo local, o link simbólico B ainda funciona para mim. Ainda exibe o conteúdo atualizado de A, mesmo que sejam feitas alterações em A após A ter sido movido. E no Path Finder, selecionar 'Show Original' no menu de contexto para B me leva ao caminho atualizado de A. E, no entanto, 'greadlink B' apenas aponta para o local original de A e não o atual.

Embora tenha mencionado especificamente links simbólicos, minha pergunta mais ampla e mais importante é como obter a localização de um arquivo depois que ele foi movido. A melhor solução que encontrei até agora é usar find de alguma forma, mas isso é muito lento quando tento rastrear mais do que alguns arquivos. Mas links simbólicos no Path Finder parecem rastrear os locais de destino de forma eficaz, então eu sei que isso deve ser possível.

    
por Matt Groth 30.08.2017 / 14:38

1 resposta

1

Obrigado @grawity por me lembrar sobre aliases. Eu tentei usar um alias em vez de um link simbólico para rastrear uma localização de arquivos. Acontece que eu posso usar o seguinte script, que retornará o caminho atual para o alvo mesmo depois que o alvo for movido.

ResolveAlias.applescript

#!/usr/bin/osascript
on run argv
    tell application "Finder"
        set theItem to (POSIX file (item 1 of argv)) as alias
        if the kind of theItem is "alias" then
            get the POSIX path of (original item of theItem as text)
        end if
    end tell
end run

Chamado com osascript "/path/to/ResolveAlias.applescript" "/path/to/alias"

    
por 30.08.2017 / 15:09