Cria arquivos em subdiretórios que não existem (../new_folder/new_folder/new_file.ext)

0

Por enquanto eu uso isso:

mkdir -p a/b/c/d/e; 
touch a/b/c/d/e/file.abc; 

Existem maneiras mais eficientes?

    
por TsV 26.11.2018 / 15:54

3 respostas

2

Em termos de ferramentas usadas: não. touch falhará (corretamente) se você estiver tentando operar em um diretório que não existe, e mkdir faz exatamente uma coisa: criar diretórios , não arquivos normais . Dois trabalhos diferentes exigem duas ferramentas diferentes.

Dito isto, se você está falando de eficiência em termos do número de linhas em um script ou da legibilidade de um, você pode colocá-lo em uma função:

seedfile() {
   mkdir -p "$(dirname "$1")"
   touch "$1"
}

seedfile /path/to/location/one/file.txt
seedfile /path/to/somewhere/else/file.txt
seedfile local/paths/work/too/file.txt
    
por 26.11.2018 / 16:23
2
install -D src_file /tmp/a/b/c/d/e/f/g/h/i/dst_file
install -Dt /tmp/a/b/c/d/e/f/g/h/i your_file

Se você quiser apenas tocar em um arquivo vazio:

install -D /dev/null /tmp/a/b/c/d/e/f/g/h/i/empty_file

Veja a instalação (1) página de manual; tem opções para definir permissões, preservar timestamps, etc.

    
por 27.11.2018 / 03:17
0

Tente isto: %código% Sempre trabalhe para mim.

    
por 27.11.2018 / 23:39