Файл образа ISO представляет собой архив, поэтому его необходимо извлечь в папку, в которой можно просматривать содержимое. Например, попробуйте щелкнуть правой кнопкой мыши программу 7-zip и выбрать опцию Извлечь в папку.
Поскольку вы используете bash
:
shopt -s extglob
echo rm -rf ./!(bin|sbin|usr|...)
, я рекомендую добавить echo
в начало командной строки, когда вы запускают что-то, что потенциально может взорвать всю систему. Удалите его, если результат вас устраивает.
Примечание. Приведенная выше команда не удаляет скрытые файлы (имена которых начинаются с точки). Если вы хотите удалить и их, активируйте также опцию dotglob
:
shopt -s dotglob
Это должно выполнить работу (хотя и не так, как просит OP):
ls -1 >1.txt
pico 1.txt
удалить все файлы / каталоги, которые вы хотите сохранить
xargs rm < 1.txt
Если все ваши файлы имеют одинаковый формат имени, дату или что-то еще, тогда есть другие методы.
Я бы посмотрел на индексные дескрипторы - и посмотрел, являются ли они последовательными, с помощью ls -i | sort , и если да, то новые файлы будут иметь более крупные индексы. Затем, используя тот же тип процесса, что и выше ...
ls -iF1 | sort |cut -c10- | grep -vE "\/|\@" >i.txt #This part removes entries that are not regular files, such as directories and links.
pico i.txt
xargs rm < i.txt
в приведенной выше команде вырезания, сначала проверьте свой список inodes, чтобы убедиться, что это правильное количество.
Эта команда покажет все не каталоги в /
:
find / -maxdepth 1 -type f
После того, как вы сделаете абсолютно уверенным нет файлов, которые вы хотите сохранить, вы можете использовать:
find / -maxdepth 1 -type f -delete
Безопаснее было бы переместить их в другое место, чтобы убедиться, что вы не удаляете то, что хотите сохранить:
mkdir /root/preserve
find / -maxdepth 1 -type f -exec mv -- "{}" /root/preserve/\;
Если, помимо файлов, вы также иметь каталогов , которые вы добавили в корень файловой системы, этот можно автоматизировать путем исключения каталогов LSB из автоматического mv
или rm
, но, честно говоря, поскольку мы имеем дело с очисткой вещей в корне файловой системы, я настоятельно рекомендую вам подумать о том, чтобы сделать это вручную, если это вообще возможно.
Если это невозможно, то что-то вроде этого может помочь:
#!/bin/bash
declare -a excludes
for item in root sys 'lost+found' mnt home proc etc opt boot lib lib64 libx32 sbin media srv dev var usr bin tmp run; do
excludes+=("$item")
done
if ! [[ -d /root/preserve ]]; then
mkdir -p /root/preserve
fi
IFS="\n"
for item in find / -type d -maxdepth 1; do
really=true
for exclude in ${excludes[@]}; do
if [[ "$exclude" == "${item#/}" ]]; then
really=false
fi
done
if [[ "true" == "$really" ]]; then
mv -- "$item" /root/preserve/
fi
done
После того, как вы прошли тест на крик (т.е. ваша система все еще работает, и вы не кричите от боли), вы можете удалить содержимое / корень / сохранить /
.
rm -fr [ЗДЕСЬ НИЧЕГО ПРОИСХОДИТ] /
.