如何删除shell脚本中的某些模式

时间:2014-10-16 10:35:08

标签: php bash shell sed

我需要在此脚本中添加一些代码,以忽略PATHLIST中存储的某些模式。如何删除最终报告中要忽略的这些模式?

#!/bin/bash

PATHLIST="/home/*/public_html/"

TMPFILE=/tmp/xs.tmp

echo > $TMPFILE

for i in $PATHLIST; do `find $i -mtime 0 -type f ! \( -iname "*.jpg" -o -iname "*.gif" -o -iname "*.png" -o -iname "*.swf" -o -iname "*.psd" -o -iname "*.htaccess" -o -iname "*.pdf" -o -iname "*.FH11" -o -i$

if ! [ `cat $TMPFILE | grep [a-zA-Z] | wc -l` = 0 ]
then
   for i in `cat $TMPFILE`
        do
                echo "Found $i"

        done | mail -s "Recent changes detected" email@email.com
fi

1 个答案:

答案 0 :(得分:1)

发布的代码中存在许多严重错误(即,在tmp文件中没有回显,打开一组反引号,打开循环)。

很难分辨出你想要实现的目标,但很明显你正在使用文件通配(即PATHLIST)并找到创建文件列表,当简单地使用find时会好得多

您可以通过-prune选项忽略带有find的文件。

find \( -iname '*.gif' -o -iname '*.jpg' -prune \) -o \( -print \)

然后将该输出定向到while循环以处理每个文件。

如果你能澄清你究竟想做什么,那么我可以提出进一步的建议......