Как отсортировать по размеру все жестко связанные файлы в текущем каталоге (и подкаталогах)

for a in $(find . -xdev -type f -printf '%i\n'|sort|uniq -d);do find . -xdev -inum $a -printf '%s %i %m %n %U %G %AD %Ar %p\n';done|sort -n|awk '{if(x!=$2){print "---"};x=$2;print $0}'


Команда «for a in $(find . -xdev -type f -printf ‘%i\n’|sort|uniq -d);do find . -xdev -inum $a -printf ‘%s %i %m %n %u %g %ad %ar %p\n’;done|sort -n|awk ‘{if(x!=$2){print «—«};x=$2;print $0}'» позволяет отсортировать все жестко связанные файлы в текущем каталоге и его подкаталогах по размеру.

Команда начинает с поиска всех файлов в текущем каталоге и его подкаталогах и выводит их inode (уникальный идентификатор) с помощью команды «find . -xdev -type f -printf ‘%i\n'». Затем эти inode сортируются и отображаются только дубликаты (жестко связанные файлы) с помощью команды «sort|uniq -d».

Затем для каждого жестко связанного файла выполняется команда «find . -xdev -inum $a -printf ‘%s %i %m %n %u %g %ad %ar %p\n'», которая выводит информацию о файле, такую как его размер (%s), inode (%i), права доступа (%m), количество жестких ссылок (%n), пользователь (%u), группа (%g), дата модификации (%ad) и относительный путь файла (%p).

Все результаты сортируются по размеру (%s) с помощью команды «sort -n» и выводятся с использованием команды «awk». Каждый раз, когда размер меняется, выводится разделитель «—» для разделения разных размерных групп файлов.

Альтернативной командой может быть использование команды «ls -lS» для сортировки файлов по размеру.

Ответить

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