1.下面文章是用来递归修改指定目录下文件和自目录权限的一个脚本实现,对于指定文件的修改,能够经过指定后缀名来实现,脚本中sud变量接受指定的后缀名
shell
1 #!/bin/sh
2 #
3 # Filename:list_dir.sh
bash
4 # Author:CaoJiangfeng
5 # Date: 2010-06-01
6 #
7 # The script is used to change file attributes
8 # Define a function
9
10 list_dir(){
11 # Traversal parameter $1
12 for file in $1/*
13 do
14 # If it is a directory then treat it ,after it’s treated traverse it
15 if [ -d
f
i
l
e
]
;
t
h
e
n
16
e
c
h
o
"
file ] ; then 16 echo "
file];then16echo"file is directory"
17 chmod 755 $file
18 list_dir $file
19 elif [ -f $file ];
20 then
21 echo $file
22 #suffix=echo -n $file |cut -f 2 -d '.'
23 #suffix= echo -n “echo $file |cut -f 3 -d '.'
”
24 suffix=echo -n $file|awk -F. '{print $NF}'
25 #echo “$suffix”
26 echo "$file is file "
27 chmod 644 $file
28 sud=sh # The varable is used to designate which suffix will be modified
29
30 if [ “
s
u
f
f
i
x
"
=
"
suffix" = "
suffix"="sud” ] ;
31 then
32 chmod 744
f
i
l
e
33
e
c
h
o
"
file 33 echo "
file33echo"file changed"
34 fi
35 list_dir $file
36 fi
37 done
38 }
39
40
41
42 # If there is parameter to traverse the specified directory,
43 # otherwise the current directory traversal
44 if [ $# -gt 0 ] ;
45 then
46 list_dir “$1”
47 else
48 list_dir “.”
49 fispa
2.在通过上述脚本的运行后,发现若是要皮两修改指定文件后缀的多种文件类型的权限的时候,有点不能达到与其目标,因而对上述脚本进行了扩充,使其能对多种文件类型的文件进行权限修改,使用的是for循环,代码以下
code
#!/bin/sh
Filename:list_dir.sh
Author:CaoJiangfeng
Date: 2010-08-02 15:06:38
Version:3.0
The script is used to change file attributes
Define a function
list_dir(){
Traversal parameter $1
for file in $1/*
do
# If it is a directory then treat it ,after it’s treated traverse it
if [ -d $file ] ;
then
echo "$file is directory"
chmod 755 $file
echo "Directory $file changed to 755 "
list_dir $file
elif [ -f $file ] ;
then
suffix=`echo -n $file|awk -F. '{print $NF}'` #获取$file文件的后缀
chmod 644 $file
echo "Regular file $file changed to 644"
for mysuffix in pl plx sh out #指定特定文件的后缀
do
if [ $mysuffix = $suffix ];
then
chmod 755 $file
echo "file $file changed to 755"
fi
done
list_dir $file
fi
done
}
If there is parameter to traverse the specified directory,
otherwise the current directory traversal
if [ $# -gt 0 ]
then
list_dir “$1”
else
list_dir “.”
fi
递归
3.通过修改后的代码可以对perl,shell,a.out文件等特殊文件进行特定权限修改,但是每次修改都要循环,占用时间长而且对文件进行屡次的进行权限修改,今天我使用case语句进行修改了一下上述脚本,很不错,程序以下:
ip
#!/bin/bash
Filename:list_dir.sh
Author:CaoJiangfeng
Date: 2010-08-14 20:16:20
Version:4.0
The script is used to change file attributes
Define a function
list_dir(){
Traversal parameter $1
for file in $1/*
do
# If it is a directory then treat it ,after it’s treated traverse it
if [ -d $file ] ;
then
echo "$file is directory"
chmod 755 $file
echo "Directory $file changed to 755 "
list_dir $file
elif [ -f $file ] ;
then
suffix=`echo -n $file|awk -F. '{print $NF}'` #获取$file文件的后缀
#下面case语句对文件权限进行修改
case $suffix in
"pl") chmod 755 $file
echo "file $file changed to 755"
;;
"plx") chmod 755 $file
echo "file $file changed to 755"
;;
"sh") chmod 755 $file
echo "file $file changed to 755"
;;
"out") chmod 755 $file
echo "file $file changed to 755"
;;
*)chmod 644 $file
echo "Regular file $file changed to 644"
;;
esac
list_dir $file
fi
done
}
If there is parameter to traverse the specified directory,
otherwise the current directory traversal
if [ $# -gt 0 ]
then
list_dir “$1”
else
list_dir “.”
fi