● 第1個參數(shù)表示目標(biāo)文件或目錄,當(dāng)為文件時則處理非腳本本身的文件,當(dāng)為目錄時則根據(jù)第2個參數(shù)是否遞歸處理子目錄。
● 第2個參數(shù)當(dāng)且僅當(dāng)?shù)?個參數(shù)為目錄時有效,表示是否遞歸處理子目錄,當(dāng)為空時則不處理,為-r時則處理。
1
#! /bin/bash
2
# dos2unix
3
4
self_name=$(basename "$0")
5
self_dir=$(cd "$(dirname "$0")";pwd)
6
7
transform_file()
8
{
9
name=$(basename "$1")
10
dir=$(dirname "$1")
11
12
if [ "$dir" = "." ]; then
13
dir=$(pwd)
14
fi
15
16
if [ "$dir" != "$self_dir" ] || [ "$name" != "$self_name" ]; then
17
mv $1 $1.old
18
sed 's/^M$//g' $1.old > $1
19
rm $1.old
20
fi
21
}
22
23
transform_dir()
24
{
25
local pdir=$(pwd)
26
cd $1
27
28
for s in `ls`
29
do
30
if [ -f "$s" ]; then
31
transform_file "$s"
32
else
33
if [ -d "$s" ] && [ "$2" -eq "1" ]; then
34
transform_dir "$s" "1"
35
fi
36
fi
37
done
38
39
cd $pdir
40
}
41

42
transform()
43
{
44
if [ -f "$1" ]; then
45
transform_file "$1"
46
else
47
if [ -z "$2" ]; then
48
is_r=0
49
else
50
if [ "$2" = "-r" ]; then
51
is_r=1
52
else
53
echo "Usage: $(basename $0) directory -r"
54
return 1
55
fi
56
fi
57
58
if [ -d "$1" ]; then
59
transform_dir "$1" "$is_r"
60
else
61
echo "$1 is neither file nor directory"
62
return 1
63
fi
64
fi
65
}
66
67
if [ -n "$1" ]; then
68
transform $1 $2
69
else
70
echo "Usage: $(basename $0) file or directory [-r]"
71
exit 1
72
fi
#! /bin/bash2
# dos2unix3

4
self_name=$(basename "$0")5
self_dir=$(cd "$(dirname "$0")";pwd)6

7
transform_file()8
{9
name=$(basename "$1")10
dir=$(dirname "$1")11

12
if [ "$dir" = "." ]; then13
dir=$(pwd)14
fi15

16
if [ "$dir" != "$self_dir" ] || [ "$name" != "$self_name" ]; then17
mv $1 $1.old18
sed 's/^M$//g' $1.old > $119
rm $1.old20
fi21
}22

23
transform_dir()24
{25
local pdir=$(pwd)26
cd $127
28
for s in `ls`29
do 30
if [ -f "$s" ]; then31
transform_file "$s"32
else 33
if [ -d "$s" ] && [ "$2" -eq "1" ]; then 34
transform_dir "$s" "1" 35
fi 36
fi 37
done 38

39
cd $pdir40
} 41


42
transform()43
{44
if [ -f "$1" ]; then45
transform_file "$1"46
else47
if [ -z "$2" ]; then48
is_r=049
else50
if [ "$2" = "-r" ]; then51
is_r=152
else53
echo "Usage: $(basename $0) directory -r"54
return 155
fi56
fi57

58
if [ -d "$1" ]; then59
transform_dir "$1" "$is_r"60
else61
echo "$1 is neither file nor directory"62
return 163
fi 64
fi65
}66

67
if [ -n "$1" ]; then68
transform $1 $269
else70
echo "Usage: $(basename $0) file or directory [-r]"71
exit 172
fi



