17

Допустим, у меня есть 20 файлов с именем FOOXX, где XX - номер файла, например, 01, 02 и т.д.

На данный момент, если я хочу удалить все файлы ниже номера 10, это легко, и я просто использую подстановочный знак, например, rm FOO0 *

Однако, если я хочу удалить определенные файлы в диапазоне, например, 13-15, это становится более сложным.

rm FPP [13-15] не работает и спрашивает меня, хочу ли я удалить все файлы. Аналогично rm FOO1 [3-5] желает удалить все файлы, которые начинаются с FOO1

Итак, каков наилучший способ удаления таких файлов?

Я пробовал как с bash, так и с zsh, и я не думаю, что они так сильно отличаются для такой основной задачи?

3 ответа3

30

В Bash вы можете использовать:

rm FOO1{3..5}

или же

rm FOO1{3,4,5}

удалить FOO13, FOO14 и FOO15.

Скобки расширений Bash описаны здесь.

12

Для будущих читателей команда find также может удалять файлы. Я остановился на подобной проблеме:

find . -type f -regex '...' -delete

но выбранный ответ является самым простым ответом на этот вопрос.

6

ls | grep regex | XARGS RM

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .