使用脚本实现自动清除指定文件夹下丢失链接文件的符号链接
使用脚本实现自动清除指定文件夹下丢失链接文件的符号链接
脚本可清除,指定文件夹下,对视链接文件的符号链接。
在使用Linux时,常常会为自己许多文件或者程序建立符号链接,这样就不用每次都到对应的文件夹下去寻找对应的文件而只需要对需要经常访问的文件建立符号链接就可以了,这样就能把你常需要访问的文件放到桌面上,或者指定到另外一个文件夹中。
这样访问时,方便了很多,但是用完之后往往留下许多的符号链接,这些链接需要用户自己手动确认是否可以删除,为linux的使用带来很多的不方便,使用该脚本就能解放你的双手,只需要执行一下脚本,就能将对应文件夹下没有用的符号链接清除。
#!/bin/bash
#一个可以测试链接断掉的符号链接的文件,并且可以输出它们指向的文件
#以便于它们可以把输出提供给xargs来进行处理:)
#比如.broken-link.sh/somedir/someotherdir|xargsrm
#
#下边的方法,不管怎么说,都是一种更好的办法:
#
#find"somedir"-typel-print0|\
#xargs-r0file|\
#grep"brokensymbolic"|
#sed-e's/^\|:*brokensymbolic.*$/"/g'
#
#但这不是一个纯粹的bash脚本,最起码现在不是.
#注意:谨防在/proc文件系统和任何死循环链接中使用!
##############################################################
#如果没有参数被传递到脚本中,那么就使用
#当前目录.否则就是用传递进来的参数作为目录
#来搜索.
####################
[$#-eq0]&&directorys=`pwd`||directorys=$@
#编写函数linkchk用来检查传递进来的目录或文件是否是链接,
#并判断这些文件或目录是否存在.然后打印它们所指向的文件.
#如果传递进来的元素包含子目录,
#那么把子目录也放到linkcheck函数中处理,这样就达到了递归的目的.
##########
linkchk(){
forelementin$1/*;do
[-h"$element"-a!-e"$element"]&&echo\"$element\"
[-d"$element"]&&linkchk$element
#当然,'-h'用来测试符号链接,'-d'用来测试目录.
done
}
#把每个传递到脚本的参数都送到linkchk函数中进行处理,
#检查是否有可用目录.如果没有,那么就打印错误消息和
#使用信息.
################
fordirectoryin$directorys;do
if[-d$directory]
thenlinkchk$directory
else
echo"$directoryisnotadirectory"
echo"Usage:$0dir1dir2..."
fi
done
exit0
#创建一个新文件name
andrew@andrew:/work/bash/src$touchname
#为name创建符号链接
andrew@andrew:/work/bash/src$ln-snameaaa
#删除name文件,aaa将会变成丢失链接文件的符号链接
andrew@andrew:/work/bash/src$rmname
#查看aaa为执行当前目录下的name的符号链接文件
andrew@andrew:/work/bash/src$ls-l
总用量44
lrwxrwxrwx1andrewandrew42月113:20aaa->name
-rwxrwxr-x1andrewandrew86561月3014:46a.out
-rw-rw-r--1andrewandrew18872月113:08broken_link.sh
-rw-rw-r--1andrewandrew3221月2913:08echo_unique.sh
-rw-rw-r--1andrewandrew15131月2915:55escape_charater.sh
-rw-rw-r--1andrewandrew2791月3013:48exit_example.sh
-rw-rw-r--1andrewandrew1992月111:52if_else_more.sh
-rw-rw-r--1andrewandrew19461月3021:03if_true.sh
-rw-rw-r--1andrewandrew3371月2914:02single_quotation_mark.sh
-rw-rw-r--1andrewandrew8642月112:00test.c
#调用脚本清除当前文件夹中,丢失链接文件的符号链接
andrew@andrew:/work/bash/src$bashbroken_link.sh./|xargsrm
andrew@andrew:/work/bash/src$ls-l
总用量44
-rwxrwxr-x1andrewandrew86561月3014:46a.out
-rw-rw-r--1andrewandrew18872月113:08broken_link.sh
-rw-rw-r--1andrewandrew3221月2913:08echo_unique.sh
-rw-rw-r--1andrewandrew15131月2915:55escape_charater.sh
-rw-rw-r--1andrewandrew2791月3013:48exit_example.sh
-rw-rw-r--1andrewandrew1992月111:52if_else_more.sh
-rw-rw-r--1andrewandrew19461月3021:03if_true.sh
-rw-rw-r--1andrewandrew3371月2914:02single_quotation_mark.sh
-rw-rw-r--1andrewandrew8642月112:00test.c
总结
以上所述是小编给大家介绍的使用脚本实现自动清除指定文件夹下丢失链接文件的符号链接,希望对大家有所帮助!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。