run*_*el0 27 bash find symlink
我已经创建了大量日志文件的符号链接。日志文件的语法是yyyymmdd.log.gz.
为了简化事情,我使用了一个简单的序列而不用解析它date:
for dd in $(seq -w 20150101 20151231) ; do
ln -s $origin/$dd.log.gz $target/$dd.log.gz
done
Run Code Online (Sandbox Code Playgroud)
如何摆脱我刚刚创建的所有损坏的符号链接?
run*_*el0 53
这个简单的一个衬垫可以非常快地完成这项工作,需要 GNU find:
find . -xtype l -delete
Run Code Online (Sandbox Code Playgroud)
一点解释:
-xtype l测试断开的链接(与 相反-type)
-delete 直接删除文件,无需进一步打扰xargs或-exec
注意:-xtype l 表示 -xtype小写L(如链接中所示);)
小智 7
find -L /path -type l -exec rm -i {} \;
Run Code Online (Sandbox Code Playgroud)
使用-L,find尝试遵循符号链接来评估-type测试。如果它成功跟踪链接,则该链接没有断开,并且-type l测试将是错误的(因为它是针对链接解析的事物进行评估的)。如果跟随链接失败,则链接断开并且-type l测试为真。
如果-type l测试成功,则-exec rm {} \;删除断开的链接。
建议使用-xtype lGNUism,主要针对 Linux 用户,不适用于非 GNU UNIX 系统,如 Solaris、FreeBSD 等。