2010-04-03 60 views
3

我想寫一個Linux下的shell腳本,其中列出了所有文件夾(遞歸)與某個名稱和沒有符號鏈接指向它。查找具有特定名稱和沒有符號鏈接指向他們的文件夾

例如,我有:

/home/htdocs/cust1/typo3_src-4.2.11 
/home/htdocs/cust2/typo3_src-4.2.12 
/home/htdocs/cust3/typo3_src-4.2.12 

現在我想通過/家/ htdocs目錄的所有子目錄,並找到那些typo3_ *文件夾,不是從某處指向。

應該可以用一個shellscript或命令,但我不知道如何。

感謝您幫助

斯特凡

回答

1

我覺得沒有一個共同文件系統存儲的,如果有指向此文件中的文件節點,那麼你就必須掃描所有其他文件看到符號鏈接如果它是這個符號鏈接。如果您不將搜索深度限制在某個級別,則這可能需要很長時間才能完成。例如,如果您想在/home/htdocs中執行該搜索,例如,它可以這樣工作:

# find specified folders: 
find /home/htdocs -name 'typo3_*' -type d | while read folder; do 
    # list all symlinks pointing to $folder 
    find -L /home/htdocs -samefile "$folder"|grep -v "$folder\$" 
done 
+0

如果任何目錄名稱中有空格,這將失敗。您應該將第一個'find'放入'while read'循環中。此外,在某些特殊情況下,'grep -v' *可能會錯誤地消除目錄,因爲模式中沒有任何錨點。 – 2010-04-09 19:15:03

+0

@丹尼斯威廉姆森:感謝您的反饋,更新了答案 – soulmerge 2010-04-10 09:01:19

相關問題