使用UNIX中的脚本删除具有特定模式的文件

时间:2011-03-02 15:08:15

标签: unix delete-file

我在unix中有一些文件夹,比方说aa,ab,ac等等。我在这些文件夹中有子文件夹。它们编号为100,200等。我想删除每个主文件夹中的一些子文件夹。要删除的子文件夹必须大于特定数字(比如700以上的任何数据)如何使用脚本执行此操作?请帮忙。

3 个答案:

答案 0 :(得分:2)

我会使用find命令。你可以这样做:

find . -name '[7-9][0-9][0-9]' -execdir echo 'rm -vr' {} +

当然,您可能需要调整模式以找到正确的名称,但我需要更多信息来帮助您。

答案 1 :(得分:0)

#!/bin/bash

if [ $# -ne 2 ]
then
  echo Usage: $0 searchdir limit
  exit 1
fi

searchdir="$1"
limit="$2"
find $searchdir -type d |
egrep "/[0-9]+$" |
while read dirname
do
  let num=`basename "$dirname"`
 if [ $num -ge $limit ]
 then
    echo rm -rf "$dirname"
 fi
done

运行:     ./script.sh dirtosearch thresholdfordelete

如果您确定没问题,请在rm -rf

之前删除回声

答案 2 :(得分:0)

您可以使用find完成所有操作。

在以下命令中,find将文件传递给sh,检查它们是否> 700,如果是,则回显删除。 (如果你真的想要删除,你显然可以删除echo。)

find . -type d -regex "^.*/[0-9]+$" -exec sh -c 'f="{}";[ $(basename "$f") -gt 700 ] && echo "rm -rf $f"' \;