рекурсивно удалить, но сохранить файл .gitignore

рекурсивно удалить, но сохранить файл .gitignore

Я пробовал несколько методов из SU, но мне не удалось сделать это: у меня есть папка (например: /var/www/tmp/), которая содержит несколько файлов и каталогов. Я хотел бы удалить все файлы и папки в этом каталоге, за исключением скрытых файлов, которые находятся в /var/www/tmp, как мне это сделать?

Спасибо!

правка: для ясности, я бы хотел использовать это в cronjob

решение1

find /var/www/tmp -mindepth 1 -maxdepth 1 ! -name ".*" -exec rm -r -- {} +

Найдет файлы на максимальной (и минимальной) глубине 1 (т.е. файлы непосредственно в указанном каталоге), что делаетнетначните с точки и выполните rm -rс совпадениями в качестве аргументов.

Попробуйте сначала с простым эхо или чем-то подобным, чтобы не выстрелить себе в ногу, прежде чем вы точно поймете, как это работает для вас.

Это решает ваш вопрос о сохранении всех скрытых файлов. Ваша тема немного отличается, но команда find легко модифицируется, чтобы вместо этого просто игнорировать файлы с именем .gitignore.

решение2

Если у вас не установлена ​​опция shell dotglob, cd /var/www/tmp; rm -rf *будет делать то, что вы хотите

Связанный контент