Как я удаляю все файлы в папке кроме просто некоторых указанных файлов?

Да, просто создайте zsh с configure --prefix=/home/roseck. Это должно работать пока/, домашний раздел не смонтирован с a noexec флаг.

Оболочка не является больше особенной, чем какое-либо другое приложение.

Если Вы не можете основываться на той машине, можно попытаться основываться на другой машине той же ОС и архитектуры, предпочтительно то же распределение ОС и версия и передать скомпилированные файлы через (остерегайтесь, хотя, что, если zsh зависит от библиотек, которые не установлены на целевой машине, Вам, возможно, придется скомпилировать их также).

11
07.08.2018, 11:56
3 ответа

Если вы используете Bash:

shopt -s extglob
rm -- !(file1|file2|file3)

, первая строка только активирует расширенный сопоставление шаблона, а после этого мы используем один из них:

! (Список шаблонов) Все, кроме одного из данных шаблонов

и список шаблонов - это список одного или нескольких шаблонов, разделенных | .


или с ZSH

setopt extendedglob
rm -- ^(file1|file2)

или, более портативным, используя Найти :

find . -maxdepth 1 ! -name 'file1' ! -name 'file2' -type f -exec rm -v {} +
14
27.01.2020, 19:57

Добавьте имена файлов, которые вы хотите сохранить в текстовом файле, по одному на строку. Этот файл не должен быть в каталоге, либо вы должны добавить его имя.

Если имя вашего каталога FOO и имя файла PAR , сделайте следующее.

find foo -type f -print0|grep -vzZ -f bar|xargs -0 rm

Это делает следующее:

  1. Найти -type f поиск имен всех файлов в foo и его подкаталоги и печатает их на STDOUT. С вариантом -Print0 разграничивает имена имена файлов Nul Bytes.
  2. GREP -V -F-BAR исключает все имена файлов, которые соответствуют строке в баре . С вариантом -Z -Z он относится к своему входу в виде набора строк, разграниченных Nul Byte, с вариантом -Z он разбирает его вывод с помощью байта Nul.
  3. Xargs RM вызовы RM несколько раз, чтобы удалить файлы. С вариантом -0 он лечит свой вход как набор строк, разграниченных Nul Byte.

Это работает с именами файлов, содержащей белое пространство.

2
27.01.2020, 19:57

Сделайте подкаталог TMP , переместите все все файлы, которые вы хотите сохранить в этом каталоге и сделать RM -F * . Это не повлияет на каталог TMP .

После этого просто сделайте:

mv tmp/* .
rmdir tmp

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

Это одно из немногих случаев, когда имеет смысл использовать мышь и файловый браузер, такой как Nautilus, где вы можете на самом деле Ctrl - Нажмите несколько файлов, которые вы хотите сохранить, а затем использовать меню : Редактировать -> Инвертировать выбор , чтобы получить другие файлы, а затем удалить их.

7
27.01.2020, 19:57

Теги

Похожие вопросы