Mamorona rohy an'ohatra ho an'ny boky marobe voangona avy amin'ny command `find`

Понижение версии намного опаснее, чем обновление. Возможно, вам придется переключить репозиторий на более старую версию, удалить некоторые пакеты и запустить dist-upgrade. Однако, исходя из моего ограниченного опыта перехода на Debian, я бы сказал, что намного проще просто сделать резервную копию ваших данных, а затем снова установить свои программы - особенно если вы не знаете, как что-то исправить. Вы можете оказаться в аду зависимости.

Если вы хотите вывести список установленных вами программ, выполните команду

aptitude search '~i!~M'

На самом деле на этот вопрос есть множество ответов, касающихся получения информации об установленных пакетах. Это может пригодиться.

Кроме того, в будущем вы можете захотеть создать отдельный раздел / home. Таким образом, вы можете переустановить ОС сколько угодно, и ваши данные всегда будут там - нужно будет установить только приложения, но это не проблема.

0
29.03.2018, 17:25
3 ответа

Ваше выражение 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на тот случай, если вы использовали другой начальный каталог.

2
28.01.2020, 02:32

Цель js_books/'{}'должна быть просто js_books. Если это каталог, ln просто использует то же имя, что и исходный файл.

Проблема здесь, скорее всего, в том, что {} добавляет имена верхних каталогов, что ставит под угрозу функцию.

0
28.01.2020, 02:32

Одним из способов было бы сделать следующее:

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 для вывода команды на экран перед запуском последней команды в системе.

0
28.01.2020, 02:32

Теги

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