别偷懒,备注自己加,原理自己查!!
一、使用 shell 命令,删除/tmp 目录下,属于用户 Tom、修改时间在 60 天之前的文件,并
将删除的文件打印出来(需要删除的文件数目十分庞大,直接用 rm 无法删除,可以考虑使
用 xargs)
find /tmp –user tom –mtime +60 | xargs rm -rfv
二、使用 shell 命令,统计一个给定的英文文本文件(比如 sample.txt)中每个单词出现次
数,并降序输出出现次数最高的 10 个单词及其出现次数(组合使用 tr,sort,uniq 命令)
cat sample.txt | tr A-Z a-z |tr –cs a-z\’ ‘’ | sort | uniq –c | sort –nr | head -10
三、给定一个文本文件,编写 shell 程序实现对文件的分割,要求如下:
1、程序有两个输入参数,第一个是需要被分割文件的文件名,第二个是整数 N(N 是常数)
2、将源文件内容顺序分割成多个子文件,其中每个子文件包含源文件的 N 行数据,如果最
后一个文件不足 N 行,也单独保存成一个子文件,每个子文件以源文件的切割点来命名
3、举例:有 250 行的源文件 sample.txt,整数 N=100,那么分割出来的子文件为 1-100.txt,
101-200.txt,201-250.txt,其中 1-100.txt 包含源文件 1 到 100 行内容,101-200.txt 包含源文
件 101 到 200 行内容,201-250.txt 包含源文件 201 到 250 行内容
file= cnt= max= pos= posx= k= newname=
file=$1
if test –f “$file”
then
cnt=$2
max=$(cat $file|wc -l)
pos=1
k=1
split –l $cnt $file
for i in x*
do
posx=$(($cnt*$((k++))))
if (($posx>$max))
then newname=$pos-$max.txt
else
newname=$pos-$posx.txt
pos=$(($pos+$cnt))
fi
mv $i $newname
done
fi