
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 unlink
ou rm
os resultados de find
, use seu-delete
opçã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