Um forro mkdir com nomeação de diretórios como dias?

1

Como posso criar diretórios nomeados como dias da semana (ou seja, segunda-feira, terça-feira, .... sábado) dentro de um diretório como / tmp / em apenas um comando?

Como a combinação de mkdir com date +%A ou qualquer outra.

mkdir -p /tmp/"$(date +%A)"  --->  /tmp/Tuesday

Deve ser como abaixo após o comando ser executado.

/tmp/Monday
/tmp/Tuesday
.
.
.
/tmp/Saturday

Eu quero isso em um único comando, não em um script.

    
por Rahul_Dange 28.03.2017 / 13:09

3 respostas

3

Você pode usar o seguinte 'comando' para obter o resultado desejado:

for i in {1..7}; do mkdir /tmp/$(date +"%A" --date "$i days ago"); done
    
por 28.03.2017 / 13:33
3

Você pode usar a expansão de chaves:

mkdir -p /tmp/{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}

O acima é equivalente a isso (que também é um único comando):

mkdir -p /tmp/Sunday /tmp/Monday /tmp/Tuesday /tmp/Wednesday /tmp/Thursday /tmp/Friday /tmp/Saturday
    
por 28.03.2017 / 14:00
3

com zsh :

zmodload zsh/langinfo # if not already loaded
mkdir /tmp/${(v)^langinfo[(I)DAY_*]}

Que usa nomes de dia em sua localidade. Como um único comando:

zsh -c 'zmodload zsh/langinfo && mkdir /tmp/${(v)^langinfo[(I)DAY_*]}'

$langinfo é uma matriz associativa especial que expõe algumas configurações de localidade, incluindo nomes de dias. $langinfo[(I)DAY_*] produziria as chaves dessa matriz que correspondem a DAY_* (ou seja, DAY_1 , DAY_2 ...). Com o sinalizador de expansão do parâmetro (v) , expandimos os valores para essas chaves. ^ distribui esses elementos para que se torne /tmp/value1 , /tmp/value2 ...

Com qualquer shell do tipo POSIX, você também pode fazer:

(cd /tmp && IFS=';' && set -o noglob && mkdir $(locale day))

locale day retorna uma lista separada por ; de nomes de dias na localidade atual. Usamos o operador split + glob nele (deixe a substituição do comando $(...) sem aspas) depois de ter desativado a parte glob ( set -o noglob ) e sintonizado a parte split para dividido em ; ( IFS=';' ).

    
por 28.03.2017 / 14:12

Tags