2
在sardi圖標主題中,我注意到符號鏈接指向符號鏈接指向原始圖像的符號鏈接。如何找到指向另一個符號鏈接的圖標的符號鏈接
命令
ls -lR . | grep ^l | wc
顯示我,我有3511個的符號鏈接次5個圖標集。 15,000個鏈接檢查。
是否有(bash)方式向我顯示所有指向另一個符號鏈接的鏈接?
在sardi圖標主題中,我注意到符號鏈接指向符號鏈接指向原始圖像的符號鏈接。如何找到指向另一個符號鏈接的圖標的符號鏈接
命令
ls -lR . | grep ^l | wc
顯示我,我有3511個的符號鏈接次5個圖標集。 15,000個鏈接檢查。
是否有(bash)方式向我顯示所有指向另一個符號鏈接的鏈接?
下面是使用find
的解決方案和一些bash實現:
shopt -s extglob
find . -type l | while read -r; do
t="$(readlink "$REPLY")"
if [[ "$t" != /* ]]; then
t="${REPLY%%*([^/])}$t"
fi
[ -L "$t" ] && echo "$REPLY"
done
或全部一行:
find . -type l | while read -r; do t="$(readlink "$REPLY")"; if [[ "$t" != /* ]]; then t="${REPLY%%*([^/])}$t"; fi; [ -L "$t" ] && echo "$REPLY"; done
find . -type l
找到的所有符號鏈接。$REPLY
,我們使用readlink
得到它的目標$t
。/
開始),我們在原路徑$REPLY
(表達式${REPLY%%*([^/])}
刪除所有尾隨的非斜槓字符)前加上dirname。-L
),我們輸出原始名稱$REPLY
。必須啓用extglob
擴展才能使*([^/])
正常工作。
鏈接,既硬又符號,只是一種方式。如果你想看到所有鏈接「指向」另一個鏈接,你必須檢查整個系統中的所有鏈接,看看哪些鏈接指向指定的目標。基本上你需要做'find/-type l'並檢查每個文件(如果它們指向目標,它的確會有幾千個)。 –
可能的重複:https://stackoverflow.com/questions/6184849/symbolic-link-find-all-files-that-link-to-this-file –
@LeoIzen我不認爲這是重複的。 – melpomene