1

Например, если есть dir 3:

mkdir 4; cp file 4

dir также можно назвать 3 other text Тем не менее, текст не должен быть в mkdir 4 кроме увеличенного числа. Наибольшее число должно быть обнаружено.

2 ответа2

1

Предположим, у вас есть последовательно пронумерованные каталоги, такие как: ' dirnameN ',
где « N » - это число.

Вы можете найти наибольшее число (из родительского каталога),

find . -type d -name dirname\* | sed 's|dirname||' | sort -n | tail -1

Таким образом, вы используете шаблон в именах каталогов, чтобы отфильтровать его (с помощью « sed ») и оставить номер.
Затем вы сортируете численно, чтобы найти последний номер.

После этого вы добавите один к этому и перейдете к следующему каталогу, используя тот же шаблон.

Скажи что-то вроде

dirnamePattern=dirname
lastDirname=11
newDirname=$((lastDirname+1))
newDirname=${dirnamePattern}${newDirname}

даст вам « dirname12 ».

1

Следующее должно сделать вещь в одной строке:

mkdir $(($(find . -type d | sed -e 's/[^0-9]*//g' | sort -n | tail -n 1)+1))

Учитывая папки:

1 something
3 other text
some 5 thing
2 test

это создает папку с именем 6 .

Если вы хотите скопировать файл с именем file , просто сделайте что-то вроде этого:

name=$(($(find . -type d | sed -e 's/[^0-9]*//g' | sort -n | tail -n 1)+1)); mkdir $name; cp file $name

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .