Удалить старый каталог, создать новый пустой каталог

Одиночная команда bash >| foo создает пустой файл fooнезависимо от того, был ли он ранее непустым, пустым или отсутствующим. (Сбой, если он был только для чтения или каталог.)

Есть ли аналогичная команда для создания пустой директории? Это должно работать, если каталог был там раньше или нет, пустой или нет. Примерно так же, как rm -rf fooDir; mkdir -p fooDir но не нарушая, не повторяйся. (Допустимо потерпеть неудачу, если каталоги или файлы доступны только для чтения.)

Контекст представляет собой сценарий, который создает каталог для хранения своих выходных данных, но стирает выходные данные любого предыдущего запуска.

2 ответа

Я считаю, что ответ: нет. Там нет единой команды для того, что вы просите, по крайней мере, по этим двум ссылкам:

Все, что я могу сказать, это просто использовать две отдельные команды. Это может быть некрасиво и "неудобно", но, скорее всего, это единственный способ сделать это на 99%.

Сначала найдите пустой каталог. Универсального способа сделать это не существует, но вы можете либо сделать один, либо найти вероятного кандидата с find /var -type d -empty | xargs ls -ltd, Например, на Ubuntu 14, /var/lib/ntpdate был пустым в течение многих лет. Еще одна безопасная ставка /etc/ppp/resolv,

Тогда единственная команда rsync -a --delete /var/lib/ntpdate/ fooDir, Конечный слэш имеет значение. К сожалению, без универсального /dev/nullDirЭто решение может сбить с толку новичка. Так что если ваш скрипт должен делать это много раз, стоит сначала создать /tmp/emptyDir и затем используйте это с rsync.

Другие вопросы по тегам