Очистка папок, за исключением файлов определенного типа

У меня есть дерево папок, как показано ниже:

parent folder ....folder A ....folder B ....folder 1 ....folder 2 ....folder C ....folder 1 ....folder 2 ....folder D ....folder 1 ....folder 2 . . 

Внутри каждой папки есть куча файлов. Эти файлы имеют разные расширения (zip, tar.gz, jpeg, bmp, csv, xlsx, doc, txt, … и т. Д.).

  1. Как удалить все файлы в папках, кроме файлов * .jpeg.

  2. Как удалить все файлы в папках, кроме нескольких типов файлов (например, кроме файлов * .jpeg, * .csv)

Чтобы достичь этого, я думал об использовании команды:

 find . type -f -exec 

Но я не знаю, как это сделать! ..

Любые другие способы сделать это?

One Solution collect form web for “Очистка папок, за исключением файлов определенного типа”

 find . type -f ! -name '*.jpeg' ! -name '*.csv' -delete 

Прочитайте это как: перемещайте текущий каталог; когда вы находите файл, который является обычным файлом и чье имя не соответствует *.jpeg и имя которого не соответствует *.csv , а затем удалите его.

Если ваша версия find не имеет -delete , make find вызывает команду rm : replacte -delete by -exec rm {} + .

В zsh (с setopt extended_glob ) *~(PATTERN) соответствует всем файлам, которые не соответствуют PATTERN . Используйте glob-классификатор D чтобы включить файлы точек и . для включения только обычных файлов. Изменение . to ^/ удалить все не-каталоги (кроме тех, которые соответствуют исключенным шаблонам).

 rm **/*~*.(jpeg|csv)(D.) 
  • Разделите большие файлы на субфайлы. Как это сделать?
  • zcat файл по строкам?
  • Копирование файлов в папку в отдельные папки
  • Как переименовать неназванные файлы с соответствующими расширениями?
  • Какие отношения связаны с маскировкой ACL и стандартным групповым разрешением на файл?
  • удаление массовой информации
  • Альтернативные способы отображения файлов, исполняемых всеми
  • Сохранять размер файла журнала без логротата
  • Backticks не работают при инкапсулировании пути в кавычки
  • Есть ли способ определить, какой процесс создает файл в osx 10.6.8
  • Есть ли способ узнать, сколько процессов открывает файл?
  • Interesting Posts

    Разница между ссылками «утилит» Linux, «команд» и «программ»

    Как удалить родительский каталог, не удаляя подпапки?

    Переименуйте сетевой интерфейс Ubuntu в экземпляре boot cloud-init

    Странный случай: текстовый файл, который существует и не существует

    Как аннулировать исходный архив в хранилище nix

    Почему я не могу сделать ls -a 1> & -?

    Наблюдение за записью жесткого диска в пространстве ядра (с драйверами / модулями)

    Путаница в команде cp при создании нового каталога

    Не думаю, что у меня достаточно адаптеров для создания статической сети?

    Имена файлов каталогов с sed с пробелами

    Огромный отвод батареи во время приостановки до выключения – 12% / час – карта nvidia не отключается

    Могу ли я пропустить проверку принудительной файловой системы?

    Добавить BASHPID в историю?

    SQLDriverConnect (из unix-odbc) кэширует данные DSN? Если да, то как я могу его очистить / очистить?

    Есть ли способ, чтобы функция в моем сценарии bash автоматически запускалась при любой ошибке команды?

    Linux и Unix - лучшая ОС в мире.