2017-03-23 54 views
2

我目前正在學習一個Linux類設備上的shell腳本,並且我設法獲得了一項額外的任務,這遠遠超過了我的技能。如何檢查符號鏈接是否指向一個空文件夾

我的任務是編寫一個shell腳本,查找指向空文件夾的符號鏈接。現在前兩個部分很容易 - 我知道如何使用find命令與-type l-xtype d這樣的測試。問題來自檢查文件夾本身是否爲空。我問過我的老師,但我所得到的只是關於xargsexec參數的神祕暗示,根據說明我實際上不允許使用這些參數。到目前爲止,我最好的選擇是將find的結果放到for循環中,並測試每個循環中鏈接的路徑,但這似乎不起作用。到目前爲止,我的代碼如下所示:

for var in $`find $1/* -type l -xtype d -print` 
do 
    if [ $`readlink -f $var` -empty ] 
    then 
    echo $`readlink -f $var` 
    fi 
done 

任何幫助將不勝感激!

回答

2

您是否在尋找-empty選項?

$ mkdir empty_folder 
$ ln -s empty_folder/ symlink 
$ find symlink -type d -empty 
symlink 

這也可以通過文件擴展完成。

$ shopt -s dotglob failglob 
$ true symlink/* 
bash: no match: symlink/* 
+0

我承認我不知道第二部分是什麼意思,但我會閱讀那本手冊。至於第一部分,我應該在選定的目錄樹中找到所有符號鏈接,但是您真的可以真正使用'-type d -empty'來檢查符號鏈接是否指向一個空文件夾? – DeadBrain

+0

有關符號鏈接的完整行爲在https://www.gnu.org/software/findutils/manual/html_mono/find.html#Symbolic-Links上給出,但我承認我不完全確定它在做什麼。 –

相關問題