Удалить файл, если символическая ссылка пропала

Похоже, вам не хватает файла sources.list. Перейдите в / etc / apt и создайте новый файл с именем sources.list

Я полагаю, вы работаете в Debian Stable, поэтому поместите этот контент внутри:

deb http://httpredir.debian.org/debian/ jessie main non-free contrib
deb http://httpredir.debian.org/debian/ jessie-updates main contrib non-free
deb http://security.debian.org/ jessie/updates main contrib non-free

deb-src http://httpredir.debian.org/debian/ jessie main non-free contrib
deb-src http://httpredir.debian.org/debian/ jessie-updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free

Если вы хотите в будущем попробовать Debian Testing (самые последние приложения, ядро ​​и т. д.), вам нужно добавить строку тестовых репозиториев в этот файл, например:

deb http://httpredir.debian.org/debian/ testing main non-free contrib
deb http://httpredir.debian.org/debian/ testing-updates main contrib non-free
deb http://security.debian.org/ testing/updates main contrib non-free

deb-src http://httpredir.debian.org/debian/ testing main non-free contrib
deb-src http://httpredir.debian.org/debian/ testing-updates main contrib non-free
deb-src http://security.debian.org/ testing/updates main contrib non-free

Для сравнения посмотрите в моем Папка / etc / apt:

root@debian:/home/gv/Desktop/PythonTests# ls -al /etc/apt 
total 56
drwxr-xr-x   6 root root  4096 Jan  4 19:16 .
drwxr-xr-x 131 root root 12288 Jan  4 19:17 ..
drwxr-xr-x   2 root root  4096 Jan  5 00:38 apt.conf.d
-rw-r--r--   1 root root    99 Dec 27 08:42 listchanges.conf
-rw-r--r--   1 root root   218 Jan  1 21:53 preferences
drwxr-xr-x   2 root root  4096 Mar 12  2016 preferences.d
-rw-r--r--   1 root root  1558 Jan  1 22:00 sources.list
drwxr-xr-x   2 root root  4096 Jan  1 21:38 sources.list.d
-rw-r--r--   1 root root  4171 Jan  1 21:38 trusted.gpg
drwxr-xr-x   2 root root  4096 Dec 27 02:58 trusted.gpg.d
1
22.02.2017, 18:58
2 ответа

Делаем несколько предположений:

  • Удаленное имя файла такое же, как и локальное имя файла / символическая ссылка
  • Все локальные файлы находятся в одном каталоге
  • Все удаленные файлы находятся в одном каталоге

Вы затем может перечислить удаленные файлы и удалить те, для которых нет локального файла или символической ссылки. Что-то вроде этого может сработать

#!/bin/bash
#
rmt=/path/to/sshfs/storage
lcl=/path/to/local/storage

for itempath in "$rmt"/*.ts
do
    itemfile="${itempath/*\/}"
    if test ! -h "$lcl/$itemfile"
    then
        echo "Removing remote $itemfile with no local symlink" >&2
        rm -f "$itempath"
    fi
done

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

#!/bin/bash
#
lcl=/path/to/local/storage

for item in "$lcl"/*.ts
do
    if test -h "$item" -a ! -e "$item"
    then
        echo "Removing dangling symlink $item" >&2
        rm -f "$item"
    fi
done
2
27.01.2020, 23:34

Если я правильно понял вопрос, то подойдет следующее:

test -h <symlink> || rm <remote file>

Код проверяет, существует ли символическая ссылка и действительно ли она является символической. Если нет, будут удалены.

0
27.01.2020, 23:34

Теги

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