Adicione data ao nome da pasta criada usando mkdir

1

Eu tenho um script que, quando executado, produzirá alguns arquivos. Eu modifiquei o script adicionando as duas linhas seguintes ao topo

mkdir ABC
cd ABC

Para que os novos arquivos formados estejam dentro do diretório ABC . Minha pergunta é como eu posso adicionar a data atual para este nome de diretório ABC tal como ele se torna ABC_mar_26 (nenhum critério específico no formato de data, ABC_03_26 também está ok) se eu executar o script em 26 de março. >     

por srk_cb 26.03.2016 / 12:05

2 respostas

5

Para obter ABC_03_26 :

mkdir "ABC_$(date +'%m_%d')"

Se você quiser o nome do mês:

mkdir "ABC_$(LC_ALL=C date +'%b_%d')"

Observe que %b fornece o nome do mês abreviado do local, mas com a primeira letra maiúscula.

Com zsh , você pode:

mkdir "ABC_${(L):-$(LC_ALL=C date +'%b_%d')}"

ou usando a expansão imediata :

$ LC_ALL=C; print -rl -- ${(L)${(%):-%D{%b_%d}}}
mar_26
    
por 26.03.2016 / 12:11
1

Aqui está um aplicativo de exemplo concreto para sua pergunta, pode ser interessante também para usuários do Windows / cygwin. Certa vez, criei um script em lote .bat para fazer backup de arquivos automaticamente, criando uma subpasta nomeada com a data e hora atual. Em primeiro lugar, as variáveis são buscadas a partir do ambiente %time% e, em seguida, formatadas para obter, em termos reais, um 0 inicial. As strings são então concatenadas para uma nova variável %datetimef% e passadas para mkdir :

set hour=%time:~0,2%
if "%hour:~0,1%" == " " set hour=0%hour:~1,1%
set min=%time:~3,2%
if "%min:~0,1%" == " " set min=0%min:~1,1%
set secs=%time:~6,2%
if "%secs:~0,1%" == " " set secs=0%secs:~1,1%

set year=%date:~-4%
set month=%date:~3,2%
if "%month:~0,1%" == " " set month=0%month:~1,1%
set day=%date:~0,2%
if "%day:~0,1%" == " " set day=0%day:~1,1%

set datetimef=%year%%month%%day%-%hour%%min%%secs%

mkdir version%datetimef%
cp *.pdf version%datetimef%/
    
por 26.03.2016 / 15:05