Глобы в Bash
Bash поддерживает больше глоб-паттернов, чем описано в man glob.7.
Если в настройках шелла включена опция extglob, то доступно ещё пять дополнительных паттернов.
Например, можно использовать отрицание. Я обнаружил, что это удобно в ситуациях, когда нужно применить команду ко всем файлам, кроме одного.
В моём случае я хотел переместить всё в поддиректорию, исключив саму эту поддиректорию. Сделал так:
$ mkdir old
$ mv !(old) old
Да, конечно, можно просто выполнить mv * old. mv выдаст ошибку про то, что не может переместить папку в саму себя, но остальные файлы всё равно обработает. Однако мне как-то некомфортно запускать такую команду, потому что я обычно не помню, как именно mv обрабатывает этот краевой случай.
А с отрицанием норм.