Intereting Posts
Как удалить / изменить результаты поиска в меню запуска Linux Mint? Определение языков, доступных при загрузке – LiveCD Ошибка компоновщика: / usr / bin / ld: не удается найти -lgcc_s Чтение файла слово за словом Есть ли способ получить журналы для процессов запуска в /etc/init.d? Почему у меня GRUB и GRUB2 в моем загрузочном каталоге? читать запись файла по записи и делать преобразование в последующую запись на основе вышеуказанной записи и записывать в другой файл Невозможно добавить себя в группу «судо» Как переименовать несколько файлов с префиксом и суффиксом с помощью команды find Объединение содержимого нескольких CSV-файлов в один файл .csv Не удалось пропинговать внешнюю сеть из пространства имен linux, почему? что означает «Чтение заголовка Swap:« Успех »означает? Какой .muttrc работает на Red Hat 5.11? Какая версия Linux для практического использования сценариев / программирования Unix? Как возобновить программу при входе в систему с помощью другого сеанса

найти все жестко связанные файлы между двумя каталогами

Как найти, связаны ли какие-либо файлы из двух или более каталогов? Другими словами, какие файлы в двух или более каталогах относятся к одному файлу?

Как и для поиска всех жестких ссылок на данный файл? [duplicate] и Список всех файлов с тем же номером inode? , Тем не менее, мне интересно, как искать любые файлы с жесткой связью среди разных каталогов .

Вы можете использовать find для указания номера inode всех файлов в каталогах с более чем 1 ссылкой, затем сортировки результата и извлечения строк, где один и тот же индекс появляется более одного раза. Очевидно, что каталоги должны быть в одной файловой системе:

 find dir1 dir2 ... -type f -links +1 -printf '%i %p\n' | sort -n -k1,1 | awk '{ same = ($1==last) if(!same)save = $0 else{ if(save!=""){ print save; save = "" } print } last = $1 }' 

Этот код печатает файлы и их inode. Для людей без find -printf используйте -ls который печатает немного больше, но будет делать.

Эта команда find должна печатать все файлы в каталоге ./b которые ссылаются на файлы под каталогом ./a .

 find ./a -type f -exec find ./b -samefile {} -printf "%p hard link to {}" \; 

Пример, заданные пути к файлам и номера индексов

 $ find -type f -printf '%p:%i\n' | sort | column -t -s: ./a/f 12977541 ./b/f 12977577 # unique file ./c/f 12977541 # points to same file as path ./a/f #file inode 

Запустите команду find в каталоге ./a и ./b чтобы найти любые файлы с ./c каталоге ./c .

  $ find ./a ./b -type f -exec find ./c -samefile {} -printf "%p hard link to {}" \; ./c/f hard link to ./a/f 

Это операция O (n ^ 2) . Это займет очень много времени, учитывая большое количество файлов!

Использование GNU find 4.4.2 , linux 3.13.0-85 , Ubuntu 14.04 .