Знайдіть та видаліть усі файли без розширень у папці та її підпапках


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той, що в останньому коментарі також видалить файли без розширень. І що сказав Раду! Перевірте спочатку!
terdon

@ RaduRădeanu я насправді спершу перевірив його на фіктивній
папці

@terdon Що означає знак питання у вашій другій команді?
Авінаш Радж

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.