Como desvincular todos os links simbólicos do diretório?

Como desvincular todos os links simbólicos do diretório?

Gostaria de desvincular os links simbólicos assim:

unlink *

No entanto, dizunlink: extra operand

Gostaria de excluir apenas o arquivo do link e manter o arquivo original.

Responder1

Usando o "*" você está tentando desvincular todos os arquivos e diretórios em sua localização atual.

unlink não pode lidar com arquivos ou diretórios, ele pode lidar apenas com links, use o comando find para encontrar todos os links e desvinculá-los, assim:

find . -type l -exec unlink {} \;

Responder2

Eu evitaria gerar outros processos com find … -exec …. Quando você precisar unlinkou rmos resultados de find, use seu-deleteopção em vez disso.

find . -maxdepth 1 -type l -delete

Este comando encontrará todos os links simbólicos ( -type l) no diretório atual (não nos subdiretórios; você *não desce para os subdiretórios, então presumo que é isso que você deseja) e os excluirá. O comportamento padrão é não seguir links simbólicos, portanto os arquivos originais não serão afetados.

Responder3

Este comando encontrará e removerá todos os links simbólicos na pasta atual, não recorrerá às subpastas e ignorará os dotfiles

find . -maxdepth 1 -type l ! -name '.*' -delete

informação relacionada