特定のフォルダ内のファイルを指すシンボリックリンクを削除する方法は?

特定のフォルダ内のファイルを指すシンボリックリンクを削除する方法は?

次の例を挙げて説明するのが最善だと思います。

lrwxrwxrwx 1 root   root      21 Mar 31 08:44 awk -> /etc/alternatives/awk*
-rwxr-xr-x 1 root   root     45K Apr  8  2015 b43-fwcutter*
lrwxrwxrwx 1 root   root      35 Apr  1 21:42 backup-config -> /home/myuser/scripts/backup-config.sh
lrwxrwxrwx 1 root   root      37 Apr  1 21:42 backup-to-server -> /home/myuser/scripts/backup-to-server.sh

/home/myuser/scripts内のファイルを指すすべてのシンボリックリンクを削除したいと思います。

この例では。バックアップ構成を削除してサーバーにバックアップしたいと思います。

ありがとうございます!

PS削除したいフォルダに別のシンボリックリンクがありますが、バックアップにあるものではないため、パターンを実際に使用することはできません。

答え1

ファイルを繰り返し、シンボリックリンクをパターンに合わせます。これは絶対パスを持つ直接リンクに対して機能します(../../something複数のシンボリックリンクをスキップまたはスキップするなどの操作ではありません)。

for f in * ; do
    [ -L "$f" ] || continue;                      # skip anything but symlinks
    l=$(readlink "$f")                            # read the link contents
    case "$l" in 
        /home/myuser/scripts/*) echo rm "$f" ;;   # match against a pattern
    esac
done

関連情報