exclua o diretório antigo, crie um novo diretório vazio

exclua o diretório antigo, crie um novo diretório vazio

O comando bash único >| foocria um arquivo vazio foo, não importa se ele não estava vazio, vazio ou ausente. (Falha se for somente leitura ou um diretório.)

Existe um comando único semelhante para criar um diretório vazio? Deveria funcionar se o diretório estivesse lá antesou não, vazioou não. Aproximadamente o mesmo, rm -rf fooDir; mkdir -p fooDirmas sem violar Não se repita. (É aceitável falhar se os diretórios ou arquivos forem somente leitura.)

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

Responder1

Eu acredito que a resposta é não. Não existe um comando único para o que você está pedindo,pelo menosde acordo com estes 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 fazer isso.

Responder2

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

Então o único comando é rsync -a --delete /var/lib/ntpdate/ fooDir. A barra final é importante. Infelizmente, sem uma solução 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 primeiro criá-lo /tmp/emptyDire depois usá-lo com o rsync.

informação relacionada