Qual sua opinião? Um arquivo? Um comando? De qualquer forma, xargs
deve ser útil:
cat file | xargs rm
... irá apagar todos os caminhos de todas as linhas do arquivo. Se é apenas um comando que gera um caminho em cada linha, canalize-o através de xargs e ele deve funcionar bem.
Como alternativa, use xargs --arg-file="file.txt" rm
. Isso economiza cachimbo e gato desnecessário .
Se você quer fazer mais com cada linha, você pode usar um tradicional bash while loop:
# uses echo for testing
# remove # before rm for actual deletion
while read -r path; do
echo "deleting $path"
# rm "$path"
done < file
Se a sua lista é a saída de find
, você tem outras opções, incluindo a opção -delete
ou o -exec rm {} \+
. Há quase certamente algumas dezenas de outras rotas viáveis para o sucesso. Se você está fazendo a exclusão automática com a localização, basta verificar a saída antes de excluir. Não vai te perdoar seus erros.
Os espaços podem ser um problema com as tarefas de tubulação em xargs
. Isso pode não ser um problema para você e sua localização, mas os dois locate
e xargs
têm uma maneira de contornar isso. Eles podem optar por usar o caractere %code%
null como um delimitador em vez de linhas de retorno. Yay. Em suma, seu comando se torna:
locate -0b libavfilter.so | xargs -0 rm