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

261
Camille Goudeseune

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

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

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

0

2 ответа на вопрос

3
the_ultra_code

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

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

Спасибо за ссылки. Один из них дал мне идею использовать rsync. Camille Goudeseune 6 лет назад 0
0
Camille Goudeseune

Сначала найдите пустой каталог. Там нет универсального способа сделать это, но вы можете сделать один, или найти вероятный кандидат с 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.

Похожие вопросы