我正在尝试为linux和solaris编写一个shell脚本,它会找到一些早于X天的特定文件,然后删除它们。诀窍是在这个过程中有几个文件不能删除。
例如,我需要删除以下文件列表* .zip并保留* .log和* .something。*
1.zip
2.zip
3.log
prefix.something.suffix
答案 0 :(得分:4)
我发现我发现可以从逻辑运算符组成的多个复杂表达式中受益,如下所示:
find -L path -type f \( -name '*.log' \) -a ! \( -name '*.zip' -o -name '*something*' \) -mtime +3
欢呼声,
ģ
答案 1 :(得分:2)
我需要找到一种方法来提供不删除的排除文件的硬编码列表,但删除超过30天的所有其他内容。除了[exclude_file]中列出的文件外,这是一个删除30天以前的所有文件的小脚本。
EXCL_FILES=`/bin/cat [exclude_file]`;
RM_FILE=`/usr/bin/find [path] -type f -mtime +30`;
for I in $RM_FILES;
do
for J in $EXCL_FILES;
do
grep $J $I;
if [[ $? == 0 ]]; then
/bin/rm $I;
if [[ $? != 0 ]]; then echo "PROBLEM: Could not remove $I"; exit 1; fi;
fi;
done;
done;
答案 2 :(得分:1)
或者你可以这样做:
find /appl/ftp -type f -mtime +30 |grep -vf [exclude_file] | xargs rm -rf;