Правильный ответ будет зависеть от используемой вами оболочки. Это немного похоже на bash, но я не хочу делать слишком много предположений.
Команда, которую вы перечисляете touch ~/test$(($i+1)).txt
, будет корректно касаться файла с тем, чем является $i+1
, но что он не делает,меняет значение $i
.
Мне кажется, что вы хотите сделать следующее:
- Найти наибольшее значение n среди файлов с именем
testn.txt
, гдеn - это число больше 0 - Увеличьте число как m.
- коснитесь (или иным образом выведите) нового файла с именем
testm.txt
, где m - увеличенное число.
Используя перечисленные приемы здесь , вы можете обрезать части имени файла, чтобы получить желаемое значение.
Предположим, что в файле с именем "touchup.sh" содержится следующее:
#!/bin/bash
# first param is the basename of the file (e.g. "~/test")
# second param is the extension of the file (e.g. ".txt")
# assume the files are named so that we can locate via $1*$2 (test*.txt)
largest=0
for candidate in (ls $1*$2); do
intermed=${candidate#$1*}
final=${intermed%%$2}
# don't want to assume that the files are in any specific order by ls
if [[ $final -gt $largest ]]; then
largest=$final
fi
done
# Now, increment and output.
largest=$(($largest+1))
touch $1$largest$2