Менее красивое не- zsh
решение:
find . -name 'prefix*' | sort -V | head -n -2 | xargs echo rm --
Предполагается:
, префикс
и не имеют новые строки или другие забавные символы в их именах. sort
поддерживает -V
, и в вашем случае он сортируется правильно (я тестировал его с файлами с таким же простым префиксом
+ числовая форма, и он работает для меня, сгенерированный с использованием сенсорного префикса {1..100}
в bash
BTW).
поддерживает -n
. (Параметры должны поддерживаться во всех текущих дистрибутивах GNU / Linux.)
Удалите echo
для разблокировки.
[\ x80- \ xFF]
включает только кодовые точки от 128 до 255. В зависимости от локали, в частности от кодировки символов , это может быть или не быть набор символов, отличных от ASCII. Это только в случае 8-битных кодировок. (8-битные кодировки на основе ASCII, если быть точным, но вы вряд ли встретите что-либо еще.) В регионах, где символ не является однобайтным, включая UTF-8, который является стандартом де-факто, [\ x80- \ xFF]
- это лишь небольшое подмножество символов, отличных от ASCII.
Самый простой способ поиска символов, отличных от ASCII, - это установить языковой стандарт C. В языковом стандарте C символ - это байт. Использование локали unibyte также значительно ускоряет некоторые версии GNU grep.
LC_ALL=C grep --color='auto' -P -n "[\x80-\xFF]" file.tex