Допустим, у меня есть каталог, содержащий следующие файлы:
ls
ABC BCD CDE DEF abc bcd cde def Abc
Как удалить все файлы с именами файлов в верхнем регистре? (в этом случае удалите ABC BCD CDE DEF)
ABC BCD CDE DEF
Используя GNU find:
find . -maxdepth 1 ! -name '*[![:upper:]]*' -delete
Обратите внимание, что это не приводит к переходу в подкаталоги и не удаляет непустые каталоги, имена файлов которых находятся в верхнем регистре.
shopt -s extglob rm ./!(*[![:upper:]]*)
Сначала включаются расширенные шаблоны глобирования в bash, а затем используется расширенный шаблон глобинга ./!(*[![:upper:]]*) для сопоставления всех имен в текущем каталоге, которые не содержат никаких заглавных букв (т.е. только заглавные буквы) .
bash
./!(*[![:upper:]]*)