Как дефрагментировать файлы в командной строке

find ~ -maxdepth 20 -type f -size -16M -print > t; for ((i=$(wc -l 0; i--)) do a=$(sed -n ${i}p < t); mv "$a" /dev/shm/d; mv /dev/shm/d "$a"; echo $i; done; echo DONE; rm t


Данная команда ищет все файлы размером менее 16 Мб в домашней директории и ее поддиректориях, сохраняет список найденных файлов в файл t, затем проходится циклом по списку файлов в обратном порядке, перемещая каждый файл во временную папку /dev/shm/d и обратно на исходное место. Это может привести к ускорению работы системы при доступе к перемещенным файлам, так как они будут фрагментированы. Альтернативой может быть использование специализированных утилит дефрагментации файловых систем. В команде задействованы аргументы: ~ (домашняя директория), -maxdepth 20 (проходиться не более чем через 20 уровней поддиректорий), -type f (искать только файлы), -size -16M (искать файлы размером менее 16 Мб), -print (вывести найденные файлы в стандартный вывод).

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *