Работа с большим количеством файлов в linux (mv, cp, rm)
Если вдруг, неожиданно, в каком-то проекту у вас в папке накопилось много файлов, то система может начать тормозить, особенно если в вашей программе/скрипте есть частое считывание содержимого директории.
Обычно это файлы логов или еще какого нужно и не нужного мусора.
Для того, чтобы оптимизировать процесс, их необходимо или удалять или архивировать.
Подсчитать кол-во файлов в директории
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 {} \;