Іноді потрібно видалити майже всі файли з каталогу, але ви хочете зберегти один або деякі з них. Коли їх велика кількість, ходити по черзі - це нудне завдання. Це не найкращий варіант, є способи значно полегшити роботу в Linux, і ви можете одночасно усунути всі необхідні.
Наприклад, можливо, ви захочете видалити лише ті, що починаються з певного імені, або ті, що мають певне розширення тощо. Все, що можливоНасправді, в інших випадках я вже показував подібні підручники з LxA. Тут ви можете крок за кроком дотримуватися підручника і простим способом мати можливість видалити всі ті файли, які ви хочете, крім того, що ви хочете зберегти.
І найкраще це вам не потрібно буде встановлювати будь-яку програму, це можна легко зробити за допомогою таких команд, як rm і find. Тобто програми, які вже попередньо встановлені на будь-якому дистрибутиві Linux. І звичайно, метод буде заснований на пошуку шаблонів та використанні цих збігів, щоб видалити лише те, що ви хочете.
Ну а для того, щоб там усунути кілька альтернатив, Хто вони…
Видаліть файли з каталогу за допомогою rm
Ну, для того, щоб використовувати команда rm Щоб усунути те, що ви відчуваєте, вам слід знати перед деякими способами виявлення закономірностей:
- * (список шаблонів) - відповідає нулю або більше випадків зазначених шаблонів
- ? (список шаблонів) - відповідає нулю або одному входження зазначених шаблонів
- + (список шаблонів) - відповідає одному або кільком випадкам зазначених шаблонів
- @ (список шаблонів) - відповідає одному із зазначених шаблонів
- ! (список шаблонів) - відповідає чому-небудь, крім одного з поданих шаблонів
в увімкнути extglob - - Щоб мати можливість ними користуватися, спочатку потрібно виконати таку команду:
<br data-mce-bogus="1"> shopt -s extglob<br data-mce-bogus="1">
Тепер ви можете використовувати rm, щоб видалити все, що хочете. Наприклад, видалити всі файли з каталогу, крім тих, що відповідають імені «Lxa»:
rm -v !("lxa")
Ви також можете вказати два або більше імен, які ви не хочете видаляти. Наприклад, щоб уникнути видалення "lxa" та "desdelinux":
rm -v !("lxa"|"desdelinux")
Ви можете видалити всі файли, мінус ті з розширенням .mp3. Наприклад:
rm -v !(*.mp3)
Зрештою, ви можете повернутися до вимкнути extglob - -:
shopt -u extglob
Видаліть файли з каталогу за допомогою find
Іншою альтернативою rm є використовуйте find, щоб видалити все, що вам подобається. Ви можете використовувати трубу та xargs з rm, або скористатися опцією -delete для пошуку. Тобто загальним синтаксисом буде:
find /directory/ -type f -not -name 'PATRÓN' -delete find /directory/ -type f -not -name 'PATRÓN' -print0 | xargs -0 -I {} rm [opciones] {}
Наприклад, уявіть, що ви хочете видалити всі файли в каталозі, крім файлів із розширенням .jpg, ви можете використовувати одну з цих двох команд, оскільки обидві вони отримують однаковий результат:
find . -type f -not -name '*.jpg'-delete find . -type f -not -name '*.jpg' -print0 | xargs -0 -I {} rm -v {}
Натомість, якщо ти хотів додати якийсь додатковий шаблон, ти теж міг. Наприклад, припустимо, ви не хочете видаляти .pdf або .odt з каталогу:
find . -type f -not \(-name '*pdf' -or -name '*odt' \) -delete
Звичайно, ви могли б зробити те саме з | та xargs, як у попередньому прикладі. До речі, ми використовували -не заперечувати, але ви можете видалити це, щоб зробити його позитивним, тобто видалити відповідні шаблони і не виключати їх.
Видаліть файли з каталогу за допомогою змінної GLOBIGNORE
Нарешті, є Ще одна альтернатива щоб знайти та rm, і він використовує змінну середовища, щоб вказати на файли, які ви хочете видалити або виключити. Наприклад, уявіть, що ви хочете видалити всі файли в каталозі, що називається Завантаження, зберігаючи файли .pdf, .mp3 та .mp4. У цьому випадку ви можете зробити наступне:
cd Descargas GLOBIGNORE=*.pdf:*.mp4:.*mp3 rm -v * unset GLOBIGNORE