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

Спасибо!

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

2 ответа2

2

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .