Skip to content

Удалить много файлов чистить кэш

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 файлов, все будет работать но могут начаться тормоза, особенно если это файловый кеш. Возможно так же из-за этого открывается медленно.

Clone this wiki locally