jlzzjlzz亚洲乱熟在线播放

系統城裝機大師 - 唯一官網:www.farandoo.com!

當前位置:首頁 > 腳本中心 > per > 詳細頁面

使用腳本實現自動清除指定文件夾下丟失鏈接文件的符號鏈接

時間:2020-02-13來源:系統城作者:電腦系統城

使用腳本實現自動清除指定文件夾下丟失鏈接文件的符號鏈接

腳本可清除,指定文件夾下,對視鏈接文件的符號鏈接。

在使用Linux時,常常會為自己許多文件或者程序建立符號鏈接,這樣就不用每次都到對應的文件夾下去尋找對應的文件而只需要對需要經常訪問的文件建立符號鏈接就可以了,這樣就能把你常需要訪問的文件放到桌面上,或者指定到另外一個文件夾中。

這樣訪問時,方便了很多,但是用完之后往往留下許多的符號鏈接,這些鏈接需要用戶自己手動確認是否可以刪除,為linux的使用帶來很多的不方便,使用該腳本就能解放你的雙手,只需要執行一下腳本,就能將對應文件夾下沒有用的符號鏈接清除。


 
  1. #!/bin/bash
  2. # 一個可以測試鏈接斷掉的符號鏈接的文件,并且可以輸出它們指向的文件
  3. # 以便于它們可以把輸出提供給xargs來進行處理 :)
  4. # 比如. broken-link.sh /somedir /someotherdir|xargs rm
  5. #
  6. #下邊的方法, 不管怎么說, 都是一種更好的辦法:
  7. #
  8. #find "somedir" -type l -print0|\
  9. #xargs -r0 file|\
  10. #grep "broken symbolic"|
  11. #sed -e 's/^\|: *broken symbolic.*$/"/g'
  12. #
  13. #但這不是一個純粹的bash腳本, 最起碼現在不是.
  14. #注意: 謹防在/proc文件系統和任何死循環鏈接中使用!
  15. ##############################################################
  16. #如果沒有參數被傳遞到腳本中, 那么就使用
  17. #當前目錄. 否則就是用傳遞進來的參數作為目錄
  18. #來搜索.
  19. ####################
  20. [ $# -eq 0 ] && directorys=`pwd` || directorys=$@
  21.  
  22. #編寫函數linkchk用來檢查傳遞進來的目錄或文件是否是鏈接,
  23. #并判斷這些文件或目錄是否存在. 然后打印它們所指向的文件.
  24. #如果傳遞進來的元素包含子目錄,
  25. #那么把子目錄也放到linkcheck函數中處理, 這樣就達到了遞歸的目的.
  26. ##########
  27. linkchk () {
  28. for element in $1/*; do
  29. [ -h "$element" -a ! -e "$element" ] && echo \"$element\"
  30. [ -d "$element" ] && linkchk $element
  31. # 當然, '-h'用來測試符號鏈接, '-d'用來測試目錄.
  32. done
  33. }
  34. #把每個傳遞到腳本的參數都送到linkchk函數中進行處理,
  35. #檢查是否有可用目錄. 如果沒有, 那么就打印錯誤消息和
  36. #使用信息.
  37. ################
  38. for directory in $directorys; do
  39. if [ -d $directory ]
  40. then linkchk $directory
  41. else
  42. echo "$directory is not a directory"
  43. echo "Usage: $0 dir1 dir2 ..."
  44. fi
  45. done
  46. exit 0
  47. # 創建一個新文件 name
  48. andrew@andrew:/work/bash/src$ touch name
  49. # 為name創建符號鏈接
  50. andrew@andrew:/work/bash/src$ ln -s name aaa
  51. # 刪除name文件, aaa將會變成丟失鏈接文件的符號鏈接
  52. andrew@andrew:/work/bash/src$ rm name
  53. # 查看aaa為執行當前目錄下的name的符號鏈接文件
  54. andrew@andrew:/work/bash/src$ ls -l
  55. 總用量 44
  56. lrwxrwxrwx 1 andrew andrew 4 2月 1 13:20 aaa -> name
  57. -rwxrwxr-x 1 andrew andrew 8656 1月 30 14:46 a.out
  58. -rw-rw-r-- 1 andrew andrew 1887 2月 1 13:08 broken_link.sh
  59. -rw-rw-r-- 1 andrew andrew 322 1月 29 13:08 echo_unique.sh
  60. -rw-rw-r-- 1 andrew andrew 1513 1月 29 15:55 escape_charater.sh
  61. -rw-rw-r-- 1 andrew andrew 279 1月 30 13:48 exit_example.sh
  62. -rw-rw-r-- 1 andrew andrew 199 2月 1 11:52 if_else_more.sh
  63. -rw-rw-r-- 1 andrew andrew 1946 1月 30 21:03 if_true.sh
  64. -rw-rw-r-- 1 andrew andrew 337 1月 29 14:02 single_quotation_mark.sh
  65. -rw-rw-r-- 1 andrew andrew 864 2月 1 12:00 test.c
  66. # 調用腳本清除當前文件夾中,丟失鏈接文件的符號鏈接
  67. andrew@andrew:/work/bash/src$ bash broken_link.sh ./ | xargs rm
  68. andrew@andrew:/work/bash/src$ ls -l
  69. 總用量 44
  70. -rwxrwxr-x 1 andrew andrew 8656 1月 30 14:46 a.out
  71. -rw-rw-r-- 1 andrew andrew 1887 2月 1 13:08 broken_link.sh
  72. -rw-rw-r-- 1 andrew andrew 322 1月 29 13:08 echo_unique.sh
  73. -rw-rw-r-- 1 andrew andrew 1513 1月 29 15:55 escape_charater.sh
  74. -rw-rw-r-- 1 andrew andrew 279 1月 30 13:48 exit_example.sh
  75. -rw-rw-r-- 1 andrew andrew 199 2月 1 11:52 if_else_more.sh
  76. -rw-rw-r-- 1 andrew andrew 1946 1月 30 21:03 if_true.sh
  77. -rw-rw-r-- 1 andrew andrew 337 1月 29 14:02 single_quotation_mark.sh
  78. -rw-rw-r-- 1 andrew andrew 864 2月 1 12:00 test.c

總結

以上所述是小編給大家介紹的使用腳本實現自動清除指定文件夾下丟失鏈接文件的符號鏈接,希望對大家有所幫助!

分享到:

相關信息

系統教程欄目

欄目熱門教程

人氣教程排行

站長推薦

熱門系統下載