С помощью Google Crush Tools 'subtotal
:
$ sort --key 2 yourFile.txt | subtotal --key 2 --sum 1 --delim ' '
7 GeneA
9 GeneA
16
2 GeneB
2 GeneB
4
6 GeneC
6
Если выуверены, чтохотите удалить каталог Contents, вы можете использовать:
sudo rm -r -f Contents
При этом будет передан рекурсивный параметр (, который удаляет каталоги, предварительно рекурсивно удаляя содержимое ), и будет использоваться принудительный параметр (, который игнорирует -несуществующие файлы и отменяет любые запросы подтверждения ).
Обратите внимание, что этонельзя отменить.
(для получения дополнительной информации используйте rm --help
или см.http://www.gnu.org/software/coreutils/manual/html_node/rm-invocation.html#rm-invocation)
Ваш каталог выглядит пустым, но вывод ls
показывает, что там находится файл, поскольку количество ссылок для каталога равно 3, а не 2 (пустой каталог в файловой системе APFS должен иметь счетчик ссылок, равный 2 ).
Это означает, что вашей файловой системе удалось перейти в несогласованное состояние и что вам, вероятно, следует запустить fsck
на ней. В macOS это делается путем запуска первой помощи диска через приложение «Дисковая утилита».Если проблема связана с вашим основным загрузочным диском (, который часто называют «Macintosh HD», по крайней мере, по умолчанию ), вам следует сделать это в режиме восстановления.
Если это та же проблема, с которой я столкнулся , то она скорее всего будет решена, если сначала убедиться, что вы используете последнюю версию macOS (где-то в прошлом Март 2019 г. )перед выполнением первой помощи на диске в режиме восстановления.
Чтобы войти в режим восстановления, нажмите Cmd+R сразу после перезагрузки компьютера. В режиме восстановления вам будет предложено запустить «Дисковую утилиту» из меню.
В Linux, если вы создаете папку в любом месте от имени пользователя root или пользователя в пользовательском каталоге, есть 2 каталога по умолчанию, созданные системой, которые. и.. которые скрыты и их вообще нельзя убрать/удалить.
(. )обозначает текущую папку, а (... )предыдущую папку. (. )вам нужно, если вы хотите выполнить скрипт из текущего каталога (.. )вам нужно, когда вы хотите перейти в предыдущий каталог, а не использовать абсолютный путь каталога каждый раз, используя команду #cd.
Вы можете удалить скрытые каталоги, созданные пользователем, если у вас есть соответствующее разрешение или вы используете учетные данные root.
Записи каталога .
и ..
являются артефактом начала 1970-х годов, когда UNIX работала на крошечных машинах, и код тоже должен был быть крошечным.
Таким образом, люди создали настоящие жесткие ссылки на каталоги с именами .
и ..
. Эта плохая идея приводит к тому, что счетчик жестких ссылок пустого каталога равен 2.
Сегодня это чепуха, а определение POSIX с 1988 года состоит в том, что эти записи не должны существовать. Их поведение просто нужно подражать. Это означает, что если .
или ..
появляются в имени пути, файловая система просто должна вести себя правильно.
Современные файловые системы не имеют записей .
или ..
в каталогах и не имеют счетчика жестких ссылок, равного 2, для пустого каталога.
ZFS реализована таким образом, но симулирует историческое поведение, чтобы избежать сбоя плохо написанных программ. Таким образом, ZFS поставляет .
и ..
с readdir()
, хотя этих записей не существует.
Независимо от того, используете ли вы современную файловую систему или историческую файловую систему, вы не можете удалить эти записи.
Теперь на счет вашей ссылки 2....
В исторической файловой системе ОС обычно считает, что каталог с количеством ссылок > 2 имеет вложенные -каталоги и поэтому не может быть удален.
Если количество ссылок в вашем каталоге не является результатом скрытого «каталога атрибутов» для перечисленных расширенных файлов атрибутов, это должно быть результатом ошибки в файловой системе.
Если ваша ОС не позволяет удалить этот каталог с помощью программы unlink
вместо rm
, будучи root
, вам нужно запустить fsck
.
Попробуйте перезагрузить компьютер. Возможно, у вас есть процесс, в котором все еще открыт удаленный файл в каталоге Contents
. Перезагрузка освободит файл, и вы сможете удалить каталог.
Мое первое предположение состоит в том, что у вас есть файлы, которые были удалены, но остаются открытыми из-за запущенного процесса. Используйте sudo lsof | grep Contents
-, это должно дать вам все PID, в которых открыты файлы с именами, содержащими слово «Содержимое». Вот первые несколько строк вывода, чтобы показать вам заголовки:
$ sudo lsof | head
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,1 4096 2 /
systemd 1 root rtd DIR 253,1 4096 2 /
...
Когда вы избавитесь от процесса, который держит что-то открытым в вашем каталоге, вы сможете его удалить.