Я хочу создать каталог с номером в конце, например, «dir1», и увеличивать его, если каталог уже существует, пока не найдет имя каталога, которого не существует, и мне нужно сделать это в одной строке в командная строка Linux, что-то вроде:
mkdir --increment dir$
Как бы я поступил так?
Пока у меня есть это:
dir=output; n=0; mkdir -p $dir$n; if test -d $dir$n; then n=$((n+1)); echo $dir$n; fi
Но это просто повторяет следующее имя каталога, мне нужно, чтобы оно рекурсивно выполняло команду.
command-line
bash
mkdir
01AutoMonkey
источник
источник
Если вы просто хотите постепенно создавать каталоги, которые перечислены в правильном порядке, могу ли я вместо этого рекомендовать папки с именами на основе текущей даты?
Он создаст каталоги с такими именами
dir-2014-03-02
(YYYY-MM-DD
чтобы они отображались в алфавитном порядке).Если вы создаете более одного каталога в день, вы можете добавить текущее время к имени файла. Смотрите
man date
как настроить выходное форматированиеdate
.источник
сначала найдите «самый большой» dirname, получите число и увеличьте его:
источник
printf
здесь? Не будет простойecho
работы?dir[0-9]*
вместоdir*
.Предполагая, что ваши каталоги всегда начинаются с "dir1", и что нет файлов с именем $ dir * (т. Е. Все они являются последовательно пронумерованными каталогами), вы можете избежать неприятностей с этим одним вкладышем -
Это подсчитывает количество файлов, начинающихся с $ dir, затем добавляет один к этому числу и создает новый файл.
источник
Приложение к другим ответам: Если вам нужно, чтобы каталоги правильно сортировались по имени, вы также можете дополнить новый номер каталога (NUM) начальными нулями до фиксированной длины.
Следующее может быть сжато в одну строку или встроено в одно из других решений.
Это предполагает, что NUM начинается с длиной не менее 1 цифры и не будет превышать фиксированную длину. Отрегулируйте в соответствии с вашими требованиями.
источник