UPDATE: Dado que find
é a fonte dos dados, eu usaria uma matriz:
readarray -t to_remove < <(find ...)
number_of_files=${#toremove[@]}
rm -i "${to_remove[@]}"
Se você é uma versão pré-4 de bash
, use este loop para preencher a matriz.
while IFS= read -r fname; do
to_remove+=("$fname")
done < <(find ...)
Nada disso funciona com arquivos que contenham novas linhas, mas acho que é mais fácil ignorar esse caso, embora em bash
4 você possa dispensar a chamada para find
:
shopt -s nullglob globstar
to_remove=( "$WORKING_PATH"/**/* )
Suponho que você esteja preenchendo to_remove
de um arquivo. Não faça isso; leia diretamente do arquivo.
while IFS= read -r fname <&3; do
rm -i "$fname"
done 3< file.txt
Isso também usa um descritor de arquivo separado para ler o arquivo, de modo que a entrada padrão possa ser usada por rm
.
(Se você estiver realmente lendo o texto to_remove
, eu usaria apenas um arquivo temporário:
printf "%s" "$to_remove" > tmp.txt
while IFS= read -r fname <&3; do
rm -i "$fname"
done 3< tmp.txt
rm tmp.txt