f() {
if [ ! -d "$1" ]; then
echo "directory $1 do not exist" 1>&2
return
fi
case "$2" in
[0-9]) ;;
*)
echo "secont parameter must be digit" 1>&2;
return;;
esac
find $1 -type f |
awk -vOFS=/ -F / '
{
file=$NF;
$NF="";
h[$0]++
}
END {
for (i in h) {
if (h[i] <= '$2') {
print "remove "i"["h[i]"]";
system("rm "i)
}
}
}'
}
f /tmp 2
#!/bin/sh
f() {
if [ ! -d "$1" ]; then
echo "directory $1 do not exist" 1>&2
return
fi
case "$2" in
[0-9]) ;;
*)
echo "secont parameter must be digit" 1>&2;
return;;
esac
cd $1
find . -type f | # ищем все файлы
sort | # сортируем их
sed 's/\(.*\)\/\(.*\)/\2 \1/' | # разбиваем на имя директории и имя файл, переставляя их местами
uniq -cf 1 | # подсчитываем сколько файлов в директории
while read NUM FILE DIR; do # цикл перебора файлов. на входе три поля: количество файлов, имя файла и директория
if [ $NUM -le $2 ]; then # если в директории файлов меньше или равно числа в $2
if [ $DIR = . ]; then # проверяем если это файл в основной директории
rm $FILE # удаляем его
else
rm -r $DIR # если это субдиректория, то удаляем ее
fi
fi
done
}
f $@
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.