Мне было интересно, если бы было возможно иметь команду, которая создает один файл, но каждый раз, когда команда выполняется, она не будет перезаписывать файл, созданный в предыдущем выполнении.
Например: touch test1.txt
создаст 1 файл с именем test1.txt
. Но в следующий раз, когда я выполню его, я бы хотел, чтобы новый файл вызывался test2.txt
или что-то в этом роде. Так что без перезаписи уже существующего файла. В некотором смысле это может быть выполнено несколько раз без проблем.
Не поймите меня неправильно, я не пытаюсь создать несколько файлов одной командой.
Заранее спасибо!
источник
touch test$(date +%Y%m%d-%H%M%S) ; touch test$(date +%Y%m%d-%H%M%S)
, он создал только один файл. Наносекундное время работает:touch test$(date +%Y%m%d-%H%M%S%N) ; touch test$(date +%Y%m%d-%H%M%S%N)
иtouch test$(date +%Y%m%d-%H%M%S%N) test$(date +%Y%m%d-%H%M%S%N)
создайте два файла каждый.$()
так как позволяет гнездовых выражения, но вы также можете использовать кавычку:touch test`date +%Y%m%d-%H%M%S`
.Я сомневаюсь, что для этого существует общая команда, но вы можете придумать что-то вроде этого:
Входной параметр функции делится на префикс, число, суффикс, затем, пока файл не существует, число увеличивается. Найден свободный слот, файл создан с
touch
.Механизм разделения должен быть адаптирован к вашим потребностям, и должны быть добавлены различные проверки ошибок.
источник
Если порядковые номера не требуются, то самый простой способ - использовать
mktemp
команду.источник
TMPFILE=$(mktemp /tmp/example.XXXXXXXXXX) || exit 1 echo "program output" >> $TMPFILE
TMPFILE='/tmp/tmp.$$'; touch $TMPFILE