Понижение версии намного опаснее, чем обновление. Возможно, вам придется переключить репозиторий на более старую версию, удалить некоторые пакеты и запустить dist-upgrade. Однако, исходя из моего ограниченного опыта перехода на Debian, я бы сказал, что намного проще просто сделать резервную копию ваших данных, а затем снова установить свои программы - особенно если вы не знаете, как что-то исправить. Вы можете оказаться в аду зависимости.
Если вы хотите вывести список установленных вами программ, выполните команду
aptitude search '~i!~M'
На самом деле на этот вопрос есть множество ответов, касающихся получения информации об установленных пакетах. Это может пригодиться.
Кроме того, в будущем вы можете захотеть создать отдельный раздел / home. Таким образом, вы можете переустановить ОС сколько угодно, и ваши данные всегда будут там - нужно будет установить только приложения, но это не проблема.
Ваше выражение find
достаточно просто, чтобы его можно было воспроизвести с помощью подстановки оболочки bash:
shopt -s globstar nocaseglob
for book in $HOME/Coding/**/*javascript*.pdf
do
ln -s "$book" "js_books/$(basename "$book")"
done
Сначала мы сообщаем bash, что нужно включить нечувствительное к регистру -подстановку имен файлов и иметь возможность рекурсивно использовать подкаталоги через **
, затем мы перебираем в цикле все имена файлов, соответствующие « (что угодно )javascript (ничего )pdf". Для каждого из этих имен файлов мы создаем символическую ссылку на книги js _.
Вы опустили начало каждого имени файла, поэтому я просто отмечу, что вы захотите указать полный путь в цикле for
, чтобы команда ln
создавала действительные символические ссылки (или же использовать правильное количество префиксов ../
в цели символической ссылки ). Я заменил ваш find ~
на $HOME/Coding
на тот случай, если вы использовали другой начальный каталог.
Цель js_books/'{}'
должна быть просто js_books
. Если это каталог, ln просто использует то же имя, что и исходный файл.
Проблема здесь, скорее всего, в том, что {} добавляет имена верхних каталогов, что ставит под угрозу функцию.
Одним из способов было бы сделать следующее:
find ~ -type f -iregex '.*javascript.*\.pdf' -printf %f"*"%h | awk -F* '{ system("ln -s "$2"/"$1" "$2"/js_books/"$1) }'
Запустите команду find и напечатайте имя файла, за которым следует звездочка, а затем путь к каталогу. Запустите это через awk, разделив имя файла и каталог и создав команду ln для выполнения с системной функцией awk.
Имейте в виду, что это открыто для команды inject, а также используйте print для вывода команды на экран перед запуском последней команды в системе.