Удалите файлы с определенным шаблоном, используя скрипт в UNIX - PullRequest
1 голос
/ 02 марта 2011

У меня есть несколько папок в unix, скажем, aa, ab, ac и так далее. У меня есть подпапки внутри этих папок. Они пронумерованы как 100, 200 и так далее. Я хочу удалить несколько подпапок в каждой из этих основных папок. Подпапки, которые нужно удалить, должны быть больше определенного числа (скажем, больше 700). Как это сделать с помощью скрипта? Пожалуйста, помогите.

Ответы [ 3 ]

2 голосов
/ 02 марта 2011

Я бы использовал команду find.Вы можете сделать что-то вроде этого:

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

Конечно, вам может понадобиться настроить шаблон, чтобы получить правильные имена, но мне понадобится дополнительная информация, чтобы помочь с этим.

0 голосов
/ 02 марта 2011

Вы можете сделать все это, используя find.

В следующей команде find передает файлы в sh, который проверяет, являются ли они> 700 и, если да, повторяет удаление. (Вы можете удалить echo, если действительно хотите удалить.)

find . -type d -regex "^.*/[0-9]+$" -exec sh -c 'f="{}";[ $(basename "$f") -gt 700 ] && echo "rm -rf $f"' \;
0 голосов
/ 02 марта 2011
#!/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

...