Как мне перечислить файлы в каталоге, которые являются жесткими ссылками в 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="
В последние годы я несколько раз искал такое решение, но никогда не сталкивался с вашим вопросом. Таким образом:
Как отобразить / отобразить / показать количество / количество жестких ссылок всех файлов в каталоге?