Как мне перечислить файлы в каталоге, которые являются жесткими ссылками в Windows

Я пытаюсь работать с резервными копиями и новыми версиями резервных копий, и я хочу проверить, являются ли файлы, перечисленные в каталоге, уже жесткими ссылками на какой-либо файл или являются ли они последней ссылкой на этот контент.

Цель состоит в том, чтобы перейти в каталог, а затем спросить, какие файлы являются единственной жесткой ссылкой, а какие файлы - не единственной жесткой ссылкой, без необходимости спрашивать каждый из них в отдельности.

Чтобы спросить каждого в отдельности, я мог бы использовать

fsutil hardlink list

Но я должен был бы сделать это 1 на 1.

Есть идеи, как это сделать?

3 ответа

Чтобы конкретно ответить на тему темы, вы можете использоватьPowerShellи Select-Object следующим образом:

      PS> dir | select Name, LinkType, Target

Гдеselectэто псевдоним дляSelect-Object

Выход:

      Name                LinkType     Target
----                --------     ------
hardlinked_file.txt HardLink
regular_file.txt
symlinked_file.txt  SymbolicLink c:\_t\test.txt

Примечание. Жесткие ссылки в Windows не имеют понятияTargetпоскольку они являются просто указателями файловой системы на один и тот же объект, причем ни один экземпляр не считается родительским. Исходя из *Nix, я считаю это неудачным дизайнерским решением, но думаю, что у него могут быть преимущества, которые я пока не могу понять.

Я сделал сценарий cmd, который решает эту проблему.

Большая помощь в комментариях
Если вам все еще нужна помощь, задайте вопрос в репозитории gihub.

https://raw.githubusercontent.com/brunoais/cmd-dir-hardlinks/master/listHardLinks.bat

Вы можете использовать finddupe.exe, чтобы вывести список всех файлов в каталоге с количеством жестких ссылок. Но, очевидно, он не совместим с не-ASCII символами в именах файлов, и порт можно найти здесь.

Найти отдельные файлы:

finddupe.exe -v -listlink *.* | find /I "Hardlinked (1 links) node="

или файлы с несколькими жесткими ссылками:

finddupe.exe -v -listlink *.* | find /V /I "Hardlinked (1 links) node="


В последние годы я несколько раз искал такое решение, но никогда не сталкивался с вашим вопросом. Таким образом:

Как отобразить / отобразить / показать количество / количество жестких ссылок всех файлов в каталоге?

Другие вопросы по тегам