Найти и удалить все файлы без расширений в папке и ее подпапках


16

У меня есть папка без 500 подкаталогов. В нем много мусора, и я хочу его почистить.

Я уже удалил определенные типы файлов, которые мне не нужны, например изображения, с помощью этой команды:

find . -mindepth 1 -iname "*.jpg" -type f -delete

Однако теперь я хочу удалить все файлы без расширений. Файлы типа «Список покупок» и «Список покупок.txt»

Я пробовал следующую команду, но она не работала:

find . -mindepth 1 ! -iname "*.*" -type f -delete

Ответы:


20

Попробуй это:

find . -type f  ! -name "*.*"  -delete

Однако обратите внимание, что приведенное выше не удалит файлы, чье имя оканчивается ., например, на foo.. Чтобы удалить их, используйте вместо этого:

find . -type f  ! -name "*.?*" -delete

Вторая команда была моим следующим вопросом. Спасибо! Я мог также напечатать, find . -type f ! -name "*?.*" -deleteчтобы удалить файлы как ".trash" или что-то, что мне было не нужно. Не волнуйтесь - это не был мой домашний каталог, поэтому я не потерял ни одного файла конфигурации.
etsnyman

5
@etsnyman Лучше сначала протестировать команду без -deleteопции!
Раду Рэдяну

@etsnyman не совсем, чтобы удалить файлы, которые начинаются с точки, используйте find . -type f -name ".*" -deleteтот, что в вашем последнем комментарии, также удалит файлы без расширений. И что сказал Раду! Проверьте сначала!
Тердон

@ RaduRădeanu Я сначала проверил это на фиктивной директории с пустыми файлами ...
etsnyman

@terdon Что означает знак вопроса в вашей второй команде?
Авинаш Радж

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.