Intereting Posts
Как установить пользовательский файл .bashrc по умолчанию? Добавление записей в массив внутри цикла Как заставить Вино работать с SELinux? Как включить пятый последовательный порт на Debian 7 Отправьте команду с консоли на запущенный X-сервер Echo не печатает правильное значение для переменной Показывать сообщение, когда cd в определенный каталог automake error: Неэкранированная левая фигурная скобка в регулярном выражении устарела Linux-дистрибутивы Использование общего ресурса vs график времени? Удалите последний символ перед другим символом Как загрузить последний файл в папке с помощью scp? Как мой раздел (ext4) знает свой размер используемого / свободного пространства? OpenSuse 13.2 mysql-workbench отказывается запускать Как правильно извлекать различные части `dirname` в сочетании с` find`? Переход от отдельных файлов конфигурации к каталогам .d в Linux

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

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

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 

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

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

 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.)