-
Notifications
You must be signed in to change notification settings - Fork 24
Удалить много файлов чистить кэш
rsajob edited this page Oct 28, 2012
·
5 revisions
Вот ветка форума
#Посчитать сколько файлов в папке
ls /my/dir |wc -l
# Потом удалить
rm -rf /my/dir
# Можно удалять в фоне, если добавиви & в конце комманды
rm -rf /my/dir &
# и испольовать потом комманды для фона bg, fg, Ctrl+Z, Ctrl+C, jobs
Удалить по шаблону
# Проверяем что удем удалять
find /my/dir/ -name "*.log" -print
# Удаляем
find /my/dir/ -name "*.log" -delete
Один из вариантв
Проще было нужные файлы в отдельную директорию сложить, как-нибудь так:
cd /path/to/fs
mkdir useful_files
mv a b c d useful_files
И спрятать ненужные:
cd /
mount --move /path/to/fs /mnt
mkdir -p /path/to/fs
mount --bind /mnt/useful_files /path/to/fs
И потом спокойно, не торопясь, удалять мусор из /mnt. Например, так:
find /mnt -maxdepth 1 -type f | xargs -n8192 rm -f
Другой способ
$ cd /tmp/test
$ ls aaa | wc -l
2000000
$ cd aaa
$ time perl -e 'opendir(D1, "/tmp/test/aaa") || die "Error: $!"; readdir(D1); readdir(D1); while ($a=readdir(D1)) { unlink("$a");}'
Вообще если много файлов ~1000 тогда желательно разбивать их по подпапкам. Допустим брать md5 от чего-нибудь и отрезать первый символ, получится более или менее равное разделение. Так вот к чему это я, на распространенных файловых системах в линуксе желательно что бы в одной директории не находилось более 1000 файлов, все будет работать но могут начаться тормоза, особенно если это файловый кеш. Возможно так же из-за этого открывается медленно.