UNIX 파일 시스템에 특정 파일이있는 경우 bash를 사용하여 해당 파일에 대한 모든 링크를 기호 및 하드로 찾을 수 있습니까? 각각에 대해 다른 명령이 필요한 경우 무엇입니까?
UNIX 파일 시스템에 특정 파일이있는 경우 bash를 사용하여 해당 파일에 대한 모든 링크를 기호 및 하드로 찾을 수 있습니까? 각각에 대해 다른 명령이 필요한 경우 무엇입니까?
답변:
GNU로 이것을 시도하십시오 find
:
find /start/dir -L -samefile /file/to/check -exec ls -li {} \;
출력 예 :
1234704 -rw-r--r-- 2 user1 user1 1134 2009-09-11 11:12 ./x1
1234704 -rw-r--r-- 2 user1 user1 1134 2009-09-11 11:12 ./x2
1234983 lrwxrwxrwx 1 user1 user1 2 2009-10-31 16:56 ./testx -> x1
2345059 lrwxrwxrwx 1 user2 user2 2 2010-01-03 16:17 ./x3 -> x1
-ls
대신 사용할 수 -exec
있지만 개별 파일 대신 대상 파일의 inode 및 기타 정보가 표시됩니다.
-L
하고 -samefile
모두가 발생하는 나열합니다. 생략 -L
하면 기호 링크가 따르지 않습니다 (참조 man find
).
GNU Find가 없다면 다음과 같이하십시오 :
find / -inum "$(ls -i /file/to/check | cut -d ' ' -f 1)"
그러나 심볼릭 링크에는 작동하지 않습니다.