broken-link.sh

来自「一本完整的描述Unix Shell 编程的工具书的所有范例」· Shell 代码 · 共 55 行

SH
55
字号
#!/bin/bash# broken-link.sh# Written by Lee bigelow <ligelowbee@yahoo.com># Used with permission.#A pure shell script to find dead symlinks and output them quoted#so they can be fed to xargs and dealt with :)#eg. broken-link.sh /somedir /someotherdir|xargs rm##This, however, is a better method:##find "somedir" -type l -print0|\#xargs -r0 file|\#grep "broken symbolic"|#sed -e 's/^\|: *broken symbolic.*$/"/g'##but that wouldn't be pure bash, now would it.#Caution: beware the /proc file system and any circular links!###############################################################If no args are passed to the script set directorys to search #to current directory.  Otherwise set the directorys to search #to the agrs passed.####################[ $# -eq 0 ] && directorys=`pwd` || directorys=$@#Setup the function linkchk to check the directory it is passed #for files that are links and don't exist, then print them quoted.#If one of the elements in the directory is a subdirectory then #send that send that subdirectory to the linkcheck function.##########linkchk () {    for element in $1/*; do    [ -h "$element" -a ! -e "$element" ] && echo \"$element\"    [ -d "$element" ] && linkchk $element    # Of course, '-h' tests for symbolic link, '-d' for directory.    done}#Send each arg that was passed to the script to the linkchk function#if it is a valid directoy.  If not, then print the error message#and usage info.################for directory in $directorys; do    if [ -d $directory ]	then linkchk $directory	else 	    echo "$directory is not a directory"	    echo "Usage: $0 dir1 dir2 ..."    fidoneexit 0

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?