Como copiar o arquivo em um diretório numerado incrementalmente?

1

Por exemplo, se houver dir 3:

mkdir 4; cp file 4

O dir também pode ser chamado de 3 other text . Ainda nenhum texto precisa estar em mkdir 4 além do número incrementado. O maior número precisa ser detectado.

    
por nnbc 03.06.2011 / 09:43

2 respostas

1

Vamos supor que você tenha numerado diretórios sequencialmente como: ' dirnameN ',
onde ' N ' é o número.

Você pode encontrar o número mais alto (do diretório pai) por

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

Assim, você usa o padrão em seus nomes de diretório para filtrá-lo (com ' sed ') e deixar o número.
Então, você classifica numericamente para encontrar o último número.

Depois disso, você adicionaria um a isso e faria o próximo diretório usando o mesmo padrão.

Diga algo como

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

vai te dar ' dirname12 '.

    
por 03.06.2011 / 09:50
1

O seguinte deve fazer a coisa em uma linha:

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

Dadas as pastas:

1 something
3 other text
some 5 thing
2 test

isso cria uma pasta chamada 6 .

Se você quiser copiar um arquivo chamado file , faça algo assim:

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

Tags