Работа с большим количеством файлов в linux (mv, cp, rm)

просмотров: 257216 мая 2014 года

Если вдруг, неожиданно, в каком-то проекту у вас в папке накопилось много файлов, то система может начать тормозить, особенно если в вашей программе/скрипте есть частое считывание содержимого директории.
Обычно это файлы логов или еще какого нужно и не нужного мусора.

Для того, чтобы оптимизировать процесс, их необходимо или удалять или архивировать.

 

Подсчитать кол-во файлов в директории

ls | wc -l

 

Переместить файлы используя поисковую маску в другую директорию (dir_name)

find . -maxdepth 1 -type f -name "*.log" -exec mv {} ./dir_name \;

Обратите внимание, что я использовал НЕ рекурсивный поиск (-maxdepth 1)

Аналогичным образом можно и копировать или удалять файлы, заменив mv на cp или rm

 

Второй способ, xargs

find . -maxdepth 1 -type f -name "*.log" | xargs -I {} mv {} ./dir_name

Второй способ, мне показался более быстрым.

 

Архивирование с помощью 7z

find . -maxdepth 1 -type f -name "*.log" | xargs -I {} 7z a -mx9 log-20140918.7z {}

 

Для упаковки в архив arch.7z всего содержимого директории /home/user/TheDir, выполните в терминале

cd /home/user/TheDir/
7z a arch.7z

 

Простой и элегантный способ удалить пустые вложенные папки в текущем каталоге linux/*nix:

find . -depth -type d -empty -exec rmdir {} \;

 

Простой и элегантный способ удалить пустые файлы в текущем каталоге linux/*nix:

find . -type f -empty -exec rm {} \;

 

Что скажем?