A maneira de manipular arquivos com espaços é usar a diretiva -print0
para encontrar o GNU e a opção -d
para o comando read
do bash. Também é imperativo citar o "$variable"
find pics/ -type f -print0 | while IFS= read -rd "" filename; do
v=$((RANDOM % 2))
if (( v == 0 )); then
cp "$filename" dups/$RANDOM.jpg
fi
done
Os bits IFS=
e -r
garantem que os espaços e barras invertidas sejam manipulados corretamente pelo comando read
.
Dentro de expressões aritméticas (( ... ))
, você pode fornecer variáveis shell sem o $
.