2014-02-18 3 views
1

У меня есть несколько файлов с одинаковым именем. Разница в их имени - это просто увеличенное число. Например, ядра linux:Удалить файлы с похожими именами, соответствующие диапазону

rc linux-image-3.2.0-29-generic   3.2.0-29.46        Linux kernel image for version 3.2.0 on 64 bit x86 SMP 
rc linux-image-3.2.0-31-generic   3.2.0-31.50        Linux kernel image for version 3.2.0 on 64 bit x86 SMP 
rc linux-image-3.2.0-32-generic   3.2.0-32.51        Linux kernel image for version 3.2.0 on 64 bit x86 SMP 
rc linux-image-3.2.0-33-generic   3.2.0-33.52        Linux kernel image for version 3.2.0 on 64 bit x86 SMP 
rc linux-image-3.2.0-34-generic   3.2.0-34.53        Linux kernel image for version 3.2.0 on 64 bit x86 SMP 
rc linux-image-3.2.0-35-generic   3.2.0-35.55        Linux kernel image for version 3.2.0 on 64 bit x86 SMP 
.... and more of them 

Я бы хотел удалить большинство из них. Скажем, от 29 до 35. Слишком много, чтобы удалить вручную, используя sudo apt-get purge linux-image-x.x.x.x-generic. Какой скрипт я должен писать?

+0

Что вы пробовали? С какими инструментами вы знакомы? – Bex

+0

@Bex Только ручное удаление 1 к 1. Я обновил вопрос. – leemour

+0

Пожалуйста, попробуйте сделать собственное исследование, прежде чем задавать вопросы. Посмотрите, например, на 'find'. – Bex

ответ

1

Вы можете удалить файлы по их названию. Например, сделайте следующее:

rm linux-image-3.2.0-{29..35}-generic 

Перед, и убедитесь, что вы удаляете правильно, сделайте выполнить команду с ls, чтобы увидеть, какие файлы будут затронуты.

+0

+1, но это содержимое файла. Нет файлов. Ithink он хочет удалить эти строки. – MLSC

+0

Спасибо, но есть некоторые недостающие цифры, например. 31 идет после 29 и отсутствует 30 дает ошибку. – leemour

+0

вы можете использовать: 'rm linux-image-3.2.0- {29..35} -generic 2>/dev/null' – MLSC

0

Если это ваша первая линия:

rc linux-image-3.2.0-01-generic   3.2.0-29.46 

и это ваша сороковая линия: (например)

rc linux-image-3.2.0-40-generic   3.2.0-29.46 

Таким образом, вы можете использовать awk удалить определенные строки:

awk -v m=29 -v n=35 'm <= NR && NR <= n {next} {print}' test.txt 
+1

Спасибо, но я спрашиваю о именах файлов. – leemour

Смежные вопросы