|
1 #!/bin/bash
2 # symlinks.sh: 列出目录中所有的符号连接文件.
3
4
5 directory=${1-`pwd`}
6 # 如果没有其他的特殊指定,
7 #+ 默认为当前工作目录.
8 # 下边的代码块,和上边这句等价.
9 # ----------------------------------------------------------
10 # ARGS=1 # 需要一个命令行参数.
11 #
12 # if [ $# -ne "$ARGS" ] # 如果不是一个参数的话...
13 # then
14 # directory=`pwd` # 当前工作目录
15 # else
16 # directory=$1
17 # fi
18 # ----------------------------------------------------------
19
20 echo "symbolic links in directory \"$directory\""
21
22 for file in "$( find $directory -type l )" # -type l 就是符号连接文件
23 do
24 echo "$file"
25 done | sort # 否则列出的文件将是未排序的
26 # 严格上说,此处并不一定非要一个循环不可,
27 #+ 因为"find"命令的结果将被扩展成一个单词.
28 # 然而,这种方式很容易理解和说明.
29
30 # Dominik 'Aeneas' Schnitzer 指出,
31 #+ 如果没将 $( find $directory -type l )用""引用起来的话
32 #+ 那么将会把一个带有空白部分的文件名拆成以空白分隔的两部分(文件名中允许有空白).
33 # 即使这只将取出每个参数的第一个域.
34
35 exit 0
36
37
38 # Jean Helou 建议使用下边的方法:
39
40 echo "symbolic links in directory \"$directory\""
41 # 当前IFS的备份.要小心使用这个值.
42 OLDIFS=$IFS
43 IFS=:
44
45 for file in $(find $directory -type l -printf "%p$IFS")
46 do # ^^^^^^^^^^^^^^^^
47 echo "$file"
48 done|sort
|
|
|