shell实例(十六) ----find和xargs命令

1.删除当前目录下包含特俗字符和空格的文件

  #! /bin/sh
for filename in *
do
  badname=`echo "$filename" | sed -n '/[+{;"/=?~()<>&*|$]/p'`
  rm $badname 2 > /dev/null
done

find . -name "* *" -exec rm -f {} /;
exit 0

 

2.根据文件的inode号来删除文件

#! /bin/sh
ARGCOUNT=1
E_WRONGARGS=70
E_FILE_NOT_EXIST=71
E_CHANGED_MIND=72

if [ $# -ne "$ARGCOUNT" ]
then
  echo "Usage: `basename $0` filename"
  exit $E_WRONGARGS
fi

if [ ! -e "$1" ]
then
  echo "File /"$1/" does not exist."
  exit $E_FILE_NOT_EXIST
fi

inum=`ls -i | grep "$1" | awk '{print $1}'`
echo $inum
echo;echo -n "Are you absolutely sure you want to delete /"$1/" y/n? "
read answer
case "$answer" in
[nN]) echo "Changed your mind,huh?"
       exit $E_CHANGED_MIND
       ;;
*)     echo "Deleting file /"$1/".";;
esac

find . -inum $inum -exec rm {} /;

echo "File /"$1/" deleted."
exit 0

 

3.使用xargs来监控系统log

#! /bin/sh
LINES=5
( date;uname -a) >> logfile
echo "-------------------------------------------------------" >> logfile
tail -$LINES /var/log/messages | xargs | fmt -s >> logfile  -----fmt排版文本文件
echo >> logfile
echo >> logfile

exit 0

 

4.把当前文件夹下文件拷贝到另一个文件夹中

#! /bin/sh
E_NOARGS=65

if [ -z "$1" ]
then
 echo "Uage: `basename $0` directory-to-copy-to"
 exit $E_NOARGS
fi

ls . | xargs -i -t cp ./{} $1
exit 0

 

4.把当前文件夹下文件拷贝到另一个文件下

#! /bin/sh
E_NOARGS=65

if [ -z "$1" ]
then
 echo "Uage: `basename $0` directory-to-copy-to"
 exit $E_NOARGS
fi

ls . | xargs -i -t cp ./ {} $1
exit 0

 

5.通过名字,kill进程

#! /bin/sh
E_BADARGS=66
if test -z "$1"
then
  echo "Uage:`basename $0` Process(es)_to_kill"
  exit $E_BADARGS
fi

PROCESS_NAME=$1
ps ax | grep "$PROCESS_NAME" | awk '{print $1}' | xargs -i kill {} 2 & >/dev/null
exit $?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值