como tocar em arquivos como report-07/05/13

0

quando quero tocar em arquivos como report-05/07/13 com o comando touch report-$(date +%D) isso me dá um erro assim:

touch: cannot touch report-07/05/13 ': nenhum arquivo ou diretório desse tipo'

Como posso construir um?

Aliás, "NO FOLDER" é APENAS O NOME DE ARQUIVO.

    
por Hojat Taheri 05.07.2013 / 08:40

3 respostas

2

o sinal / é para o separador de caminho.

Quando você executa esse comando, o resultado será

relatório-07/05/13, mas o shell vai interpretar como este

report-07 - Parent Directory 
05 - subdirectory
03 - filename

Se você realmente quiser o diretório report-07/05, primeiro você precisa criá-lo com:

mkdir -p report-'date +%m\/%d'
touch report-'date +%D'

Se você quiser, é apenas um arquivo chamado date-M.D.Y, então será mais fácil alterar o separador

touch report-'date +%m.%d.%y'
    
por 05.07.2013 / 08:52
1

touch só pode criar arquivos, não diretórios. Você precisa criar o diretório primeiro, por exemplo, chamando mkdir -p $(dirname report-$(date +%D)) .

O -p significa pai e cria todos os diretórios ausentes no caminho fornecido. E dirname removerá o último componente de um caminho, passando apenas o diretório para mkdir .

    
por 05.07.2013 / 08:52
1

As barras são separadores de caminho no Unix e, como tal, não podem ser usadas como parte de um nome de arquivo. Se sua especificação for realmente um caminho completo, você pode fazer isso:

file=report-$(date +%D)
mkdir -p "${file%/*}"
touch "$file"
    
por 05.07.2013 / 08:52