deletar antigo dir, fazer novo diretório vazio

0

O comando bash único >| foo cria um arquivo vazio foo , não importando se era anteriormente não vazio, vazio ou ausente. (Falha se for somente leitura ou um diretório).

Existe um único comando semelhante para criar um diretório vazio? Ele deve funcionar se o diretório estiver lá antes ou não , vazio ou não . Aproximadamente o mesmo que rm -rf fooDir; mkdir -p fooDir mas sem violar Don't Repeat Yourself. (É aceitável falhar se diretórios ou arquivos forem somente leitura).

O contexto é um script que faz um diretório armazenar sua saída, mas apaga as saídas de qualquer execução anterior.

    
por Camille Goudeseune 03.10.2017 / 00:25

2 respostas

3

Eu acredito que a resposta é: não. Não há um comando único para o que você está pedindo, pelo menos de acordo com esses dois links:

Tudo o que posso dizer é apenas usar os dois comandos separados. Pode ser feio e "inconveniente", mas é 99% provável que seja a única maneira de fazê-lo.

    
por 03.10.2017 / 04:41
0

Primeiro, encontre um diretório vazio. Não há uma maneira universal de fazer isso, mas você pode criar um ou encontrar um provável candidato com find /var -type d -empty | xargs ls -ltd . Por exemplo, no Ubuntu 14, /var/lib/ntpdate está vazio há anos. Outra aposta segura é /etc/ppp/resolv .

Em seguida, o comando único é rsync -a --delete /var/lib/ntpdate/ fooDir . A barra final é importante. Infelizmente, sem um universal /dev/nullDir , esta solução provavelmente confundirá o recém-chegado. Portanto, se o seu script tiver que fazer isso muitas vezes, vale a pena criar primeiro /tmp/emptyDir e usá-lo com o rsync.

    
por 03.10.2017 / 18:41