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