● 第1個(gè)參數(shù)表示目標(biāo)文件或目錄,當(dāng)為文件時(shí)則處理非腳本本身的文件,當(dāng)為目錄時(shí)則根據(jù)第2個(gè)參數(shù)是否遞歸處理子目錄。
● 第2個(gè)參數(shù)當(dāng)且僅當(dāng)?shù)?個(gè)參數(shù)為目錄時(shí)有效,表示是否遞歸處理子目錄,當(dāng)為空時(shí)則不處理,為-r時(shí)則處理。
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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41


42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72
