OK, eu vejo o problema agora, você só precisa citar a variável ou a string ( 1
, 2
etc). Caso contrário, $n1
é considerado o nome da variável:
find . -name "file.html" -print0 | while IFS= read -r -d '' n; do
perl -i.bak -0pe 's/<\/h2>\n(.*?\n)*/<\/h2>\n/' "$n" #extract 1st part of file.html and create .bak
perl -i -0pe 's/(.*\n)*.*?<\/h2>\n//' "$n.bak" #extract 2nd part of file.html
rename 's/\.html/\.html1/' $n
rename 's/\.bak/3/' $n.bak
cat "$n"1 "$n"2 "$n"3 >> $n
done
Você também pode usar cat $n"1" $n"2" $n"3" >> $n
, mas isso será interrompido se os nomes dos arquivos contiverem espaços.