Назад | Перейти на главную страницу

удалить все, кроме одного каталога

я получил /tmp/test каталог. В нем у меня есть смесь файлов и каталогов. Один из этих каталогов /tmp/test/to_be_kept. Теперь я хотел бы знать, как мне удалить все файлы и каталоги, кроме /tmp/test/to_be_kept и все, что в нем? Спасибо

shopt -s extglob
rm -r /tmp/test/!(to_be_kept)

Это приведет к появлению некоторых сообщений об ошибках, которые вы можете игнорировать, когда он пытается повторно получить доступ к каталогам, которые уже были удалены:

find /tmp/test -mindepth 1 -type d -name to_be_kept -prune -o -exec rm -rf {} \;
  • Вот простой способ:

    ls /tmp/test | grep -v to_be_kept | xargs rm -r
    
  • Если вы хотите удалить также скрытые:

    ls -a /tmp/test | grep -v to_be_kept | xargs rm -r
    

Всегда сначала проверяйте вывод!

Попробуйте сначала без | xargs rm -r часть! Если вы получите список файлов и каталогов, которые хотите удалить, вы также можете подать заявку ...