Видаліть усі файли, окрім одного, із rm


10

Чи є якийсь спосіб видалити всі файли в каталозі, крім одного з певним іменем файлу? Наприклад, якщо у мене був каталог , що містить файли file1, file2і dontdelete. Чи був би спосіб швидко видалити file1, file2а ні dontdelete? Я знаю, що я міг би просто зробити, rm file1 file2але це не спрацювало б для ряду файлів. Крім того, я перебуваю на Mac OS X, якщо це має значення.


Проста підстановка може бути вашим рішенням: rm-файл * видалить file1 та file2, але не видаляє. Якщо ваші потреби складніші, то, залежно від мови скриптування оболонки, ви можете створити список файлів, які ви хочете видалити, використовуючи регулярний вираз і передайте це команді rm.
therobyouknow

@Rob: Так, моя ситуація складніша за це. І відповідь Ігнасіо спрацював. Дякую, хоча!
Wuffers

Відповіді:


16

В bash:

shopt -s extglob
rm !(dontdelete)

1
+1 Вау дуже лаконічне рішення. Маю це на увазі, якщо мені це потрібно.
therobyouknow

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