Удалить все файлы, кроме одного с помощью rm


10

Есть ли способ удалить все файлы в каталоге, кроме одного с определенным именем файла? Например, если у меня был каталог , содержащий файлы file1, file2и dontdelete. Был бы какой-нибудь способ быстро удалить file1, а так file2и нет dontdelete? Я знаю, что я мог бы просто сделать, rm file1 file2но это не будет работать для нескольких файлов. Кроме того, я на Mac OS X, если это имеет значение.


Ваше решение может быть простым подстановочным знаком: rm file * удалит file1 и file2, но не удалит его. Если ваши потребности более сложны, то, в зависимости от языка сценариев оболочки, вы можете сгенерировать список файлов, которые вы хотите удалить, используя регулярное выражение, и передать его в команду rm.
therobyouknow

@Rob: Да, моя ситуация сложнее, чем это. И ответ Игнасио сработал. Спасибо хоть!
Вуфферс

Ответы:


16

В Баш:

shopt -s extglob
rm !(dontdelete)

1
+1 Вау очень емкое решение. Будет иметь это в виду, если мне это нужно.
therobyouknow

это можно расширить, чтобы включить несколько каталогов, которые вы не хотите удалять
mcgrailm
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.