Я задавался вопросом, было ли это возможно, имеют команду, которая создает один файл, но каждый раз команда выполняется, это не перезаписало бы файл, созданный в предыдущем выполнении.
Например: touch test1.txt
создал бы 1 названный файл test1.txt
. Но в следующий раз, когда я выполняю его, я хотел бы, чтобы новый файл был назван test2.txt
, или что-то как этот. Таким образом не перезаписывая уже существующий файл. В некотором роде это могло быть выполнено многократно без проблем.
Не поймите меня неправильно, я не пытаюсь создать несколько файлов с одной командой.
Заранее спасибо!
Самое легкое решение состояло бы в том, чтобы добавить метку времени к имени файла и не использовать единственную цифру.
Самый легкий метод для создания пустого файла был бы touch test$(date +%Y%m%d-%H%M%S)
и это привело бы к названному файлу test20110802-170410
. В 2-й раз test*
получит более новую метку времени, таким образом, она приведет к 2 файлам.
Я сомневаюсь, что общекомандное существует, чтобы сделать это, но можно думать о чем-то вроде этого:
create() {
read prefix number suffix < <(sed -r 's/(.*)([0-9]+)\.(.*)$/\1 \2 \3/' <<<"$1")
while true; do
file="$prefix$number.$suffix"
if [[ -e "$file" ]]; then
((number++))
else
touch "$file"
break
fi
done
}
Входной параметр к функции разделяется в префиксе, числе, суффиксе, затем пока файл не существует, число увеличено. Найденный свободным слотом, файл создается с touch
.
Механизм разделения должен быть адаптирован к Вашим потребностям, и различная проверка на ошибки должна быть добавлена.
Если порядковые номера не требуются, то самый легкий путь состоит в том, чтобы использовать mktemp
команда.