Chinaunix

标题: 如何删除 链接 及链接的目标文件?(已解决) [打印本页]

作者: zhangyo0134    时间: 2008-03-20 23:10
标题: 如何删除 链接 及链接的目标文件?(已解决)
如果是多重链接,最好能够递归删除最终的目标文件?

[ 本帖最后由 zhangyo0134 于 2008-3-21 19:52 编辑 ]
作者: kenduest    时间: 2008-03-20 23:51
原帖由 zhangyo0134 于 2008-3-20 23:10 发表
如果是多重链接,最好能够递归删除最终的目标文件?


  1. #!/bin/bash

  2. echo -n "Please input the filename to test: "
  3. read filename

  4. if [ ! -e "$filename" ]; then
  5.   echo -e "\nError: File not found !\n"
  6.   exit 1
  7. fi

  8. filename_path=$(dirname $filename)

  9. if [ "$filename_path" == "$filename" ]; then
  10.    filename_path=""
  11. fi
  12. while true
  13. do
  14.     result=$(readlink $filename)
  15.     [ -z "$result" ] && break

  16.     if [ ${result:0:1} != "/" ]; then
  17.         result="${filename_path}"/${result}
  18.     fi
  19.     echo "$filename ==> $result"
  20.     filename=$result
  21. done
复制代码


請參考之。

--
作者: zhangyo0134    时间: 2008-03-21 19:49
原帖由 kenduest 于 2008-3-20 23:51 发表



#!/bin/bash

echo -n "Please input the filename to test: "
read filename

if [ ! -e "$filename" ]; then
  echo -e "\nError: File not found !\n"
  exit 1
fi

filename_path=$(dirnam ...


感谢楼上的提示,写了如下脚本:

#!/bin/sh

# 用来递归地删除 link 文件及目标文件
# 用法:rm-link link_name

export NULL=/dev/null

subtrace () {
readlink "$1" 2>&1 >$NULL && subtrace "`readlink "$1"`"
rm "$1"
}

subtrace "$1"

exit 0

另外,用来建立测试上述脚本的链接文件的脚本:

#!/bin/sh

# Creat links
# 用来建立测试 rm-link 脚本的多重链接
# 用法:creat-links new_file_name number
# 如:creat-links test_file_name 8

i=0
j=0
filename="$1"
NO="$2"
[ ! -z "$filename" ] && touch "$filename".$j

while [ "$i" -lt "$NO" ]
do
  j=$i
  i=`expr $i + 1`
  [ -f "$filename".$j ] && ln -s "$filename".$j "$filename".$i
done

exit 0

在Debian4.0上测试通过!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2