는 방법을 찾을 수 있는 모든 파일은 기본적으로 소프트 또는 하드의 링크 또는 다른 디렉토리에 있는 파일 linux?
문제
어떻게 목록의 모든 링크된 파일 시스템에 또는에서 특정 디렉토리에 있습니다.내가 사용하는 링크를 만들지만 그들이 다루기 힘들게 되었습니다.내가 원하는 목록의 모든 그러한 링크에서 디렉토리에 있습니다.사람이 도움이 될 수 있습니다?
해결책
를 찾는 심볼릭 링크는 것은 쉽습니다:
% find . -type l
는 링크는 까다롭기 때문에,경우의 하위 디렉터리에서 질문한 하위 디렉터리가 다 그를 증가 하드 링크를 계산합니다.는 하위 디렉터리에 연결된 그들의 부모는 유닉스에서는(그것의 ..
항목에서 각 하위디렉토리).
당신만을 찾으려면 연결 파 (그리고 디렉토리)이동:
% find . -type f \! -links 1
이 때문에 작동하는 파일 가 해야 하드 링크가 있는 링크를 계산>1,과 연결되지 않은 파일은 링크 count==1,이 명령을 보이는 모든 파일의 링크 계산 <>1
또,최신 버전에서의 find
당신이 사용할 수 있:
% find . -type f -links +1
이와 같은 이유로 위;그러나 최신 버전을 찾을 수 있+n 또는 n 신 수 있습니다.이에 해당하 테스트에 대한보다 큰 n 또는 n 개 미만으로,각각합니다.
다른 팁
find / -xdev -samefile filename
@OP 이 있는 경우 GNU 을 찾을 찾을 수 있습니다,하드 링크를 사용하여 -printf "%n"
,
예:
find /path -type f -printf "%f/%n/%i\n" | while IFS="/" read filename num_hlinks inum
do
echo "Filename: $filename. Number of hard links: $num_hlinks, inode: $inum"
# if 2 or more files have the same inode number, then they are hard links.
# you can therefore count how many $inum that are the same and determine those hard links, which
# you have to try doing yourself.
done
예를 들어오기
https://www.gnu.org/software/findutils/manual/html_node/find_html/Hard-Links.html
거나 결합 스타 알니타크 및 amber_linux 대답으로
find -L /where/to/search -samefile /some/link/to/file
을 찾아 모든 하드 및 소프트 링크된 파일입니다.