Linux 에서 같은 파일 을 어떻게 찾 습 니까?
컴퓨터 가 사용 되면 서 시스템 에 쓰레기 가 많이 발생 할 것 이다. 가장 전형 적 인 것 은 같은 파일 이 서로 다른 위치 에 저장 되 었 다 는 것 이다. 이런 결 과 는 디스크 공간 이 대량으로 점용 되 고 시스템 운행 이 점점 느 려 지 는 것 이다.
따라서 컴퓨터 공간 이 급 하 다 면 이런 파일 을 삭제 하고 공간 을 풀 어 보 세 요.Linux 에서 우 리 는 파일 을 식별 할 수 있다.
inode
시스템 의 같은 파일 을 찾 을 수 있 는 값 입 니 다.inode
파일 이름과 파일 내용 을 제외 한 모든 정 보 를 기록 한 데이터 구조 입 니 다.두 개 이상 의 파일 이 같은 inode 값 을 가지 고 있다 면 파일 이름 이 다 르 더 라 도 위치 가 다 르 더 라 도 내용, 소유자, 권한 이 같 습 니 다. 같은 파일 로 볼 수 있 습 니 다.이 유형의 파일 은 이른바 '하 드 링크' 입 니 다.하 드 링크 는 같은 inode 값 을 가지 고 있 지만 파일 이름 은 다 릅 니 다.소프트 링크 는 바로 단축 키 입 니 다. 대상 파일 을 가리 키 지만 자신의 inode 값 을 가지 고 있 습 니 다.
$ ls -l my*
-rw-r--r-- 4 liangxu liangxu 228 Apr 12 19:37 myfile
lrwxrwxrwx 1 liangxu liangxu 6 Apr 15 11:18 myref -> myfile
-rw-r--r-- 4 liangxu liangxu 228 Apr 12 19:37 mytwin
같은 디 렉 터 리 아래 에 어떤 파일 이 같은 inode 값 을 가지 고 있 는 지 직접 알 수 는 없 지만 식별 하 는 것 도 어렵 지 않 습 니 다.사실 저 희 는 사용 만 하면 돼 요.
ls -i
명령, inode 값 으로 정렬 하면 이 파일 들 을 직접 찾 을 수 있 습 니 다.$ ls -i | sort -n | more
...
788000 myfile <==
788000 mytwin <==
801865 Name_Labels.pdf
786692 never leave home angry
920242 NFCU_Docs
800247 nmap-notes
이 결과 의 첫 번 째 열 에 대응 하 는 inode 값 입 니 다.그래서 이 결과 에서 우 리 는 어떤 파일 이 같은 inode 값 을 가지 고 있 는 지 한눈 에 알 수 있다.
만약 당신 이 단지 파일 에 대응 하 는 하 드 링크 파일 을 찾 고 싶다 면, 우 리 는 사용 할 수 있 습 니 다.
find
명령 -samefile
옵션 을 선택 하면 빠르게 찾 을 수 있 습 니 다.$ find . -samefile myfile
./myfile
./save/mycopy
./mytwin
이 파일 들 은 모두 같은 inode 값 을 가지 고 있 으 며, 믿 지 않 으 면 다시 사용 할 수 있 습 니 다.
ls
더 많은 정 보 를 보 려 면 명령:$ find . -samefile myfile -ls
788000 4 -rw-r--r-- 4 liangxu liangxu 228 Apr 12 19:37 ./myfile
788000 4 -rw-r--r-- 4 liangxu liangxu 228 Apr 12 19:37 ./save/mycopy
788000 4 -rw-r--r-- 4 liangxu liangxu 228 Apr 12 19:37 ./mytwin
우 리 는 파일 이름 을 제외 하고 이 몇 개의 파일 이름 의 정 보 는 완전히 같다 는 것 을 볼 수 있다.세심 한 친 구 는 2 열 (하 드 연결 수) 이 4 라 는 것 을 알 수 있 습 니 다. 실제로 우리 가 찾 아 낸 파일 은 3 개 에 불과 합 니 다. 이 는 또 하나의 파일 이 그들 과 inode 값 을 공유 하고 있 음 을 설명 합 니 다. 다만 우 리 는 이 명령 을 통 해 찾 지 못 했 을 뿐 입 니 다.
게으름뱅이 로 서 매번 명령 을 두 드 리 는 것 이 얼마나 번 거 로 운 지, 직접 스 크 립 트 에 올 라 가서 디 렉 터 리 아래 의 같은 파일 을 찾 아 라!
#!/bin/bash
# seaches for files sharing inodes
prev=""
# list files by inode
ls -i | sort -n > /tmp/$0
# search through file for duplicate inode #s
while read line
do
inode=`echo $line | awk '{print $1}'`
if [ "$inode" == "$prev" ]; then
grep $inode /tmp/$0
fi
prev=$inode
done < /tmp/$0
# clean up
rm /tmp/$0
실행 결과:
$ ./findHardLinks
788000 myfile
788000 mytwin
물론 find 명령 을 사용 하여 inode 값 에 따라 시스템 에 있 는 모든 같은 파일 을 찾 을 수 있 습 니 다.
$ find / -inum 788000 -ls 2> /dev/null
788000 4 -rw-r--r-- 4 liangxu liangxu 228 Apr 12 19:37 /tmp/mycopy
788000 4 -rw-r--r-- 4 liangxu liangxu 228 Apr 12 19:37 /home/liangxu/myfile
788000 4 -rw-r--r-- 4 liangxu liangxu 228 Apr 12 19:37 /home/liangxu/save/mycopy
788000 4 -rw-r--r-- 4 liangxu liangxu 228 Apr 12 19:37 /home/liangxu/mytwin
이 명령 에서 우 리 는 잘못된 힌트 를 다시 설정 합 니 다.
/dev/null
이 특수 파일 에 서 는 접근 할 수 있 는 권한 이 없 는 경 로 를 검색 할 때 화면 이 가득 차지 않 습 니 다. permission denied
。
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.