같은 폴더에 같은 이름을 가진 두 개의 파일 - 하나만 삭제해야 하지만 둘 다 삭제할 ​​필요는 없습니다.

같은 폴더에 같은 이름을 가진 두 개의 파일 - 하나만 삭제해야 하지만 둘 다 삭제할 ​​필요는 없습니다.

폴더에 /var/spool/lp/logs"requests"라는 파일이 두 개 있는 것 같습니다. 하나는 lp에 속하고 다른 하나는 root에 속합니다.

루트가 소유한 요청 파일을 삭제해야 합니다. 이를 어떻게 참조합니까?

다음은 명령의 출력입니다 ls -l.

-rw-r--r--   1 root     sys            0 Jan 30  2014 lp                 
-rw-rw----   1 root     lp          6584 Nov  4 06:10 lpsched            
-rw-rw----   1 lp       lp          3365 Dec 14 10:56 requests           
-rw-r--r--   1 root     sys      1668416 Dec 14 10:41 requests           
drwxr-xr-x   2 root     sys         1024 Sep 30  2013 requests.archives  

답변1

GNU ls가 있는 경우 다음을 ls -lQ실행하여 참조된 파일 이름 버전을 볼 수 있습니다.

$ ls -lQ
total 0
-rw-r--r--. 1 user group 0 Dec 14 14:32 "requests"
-rw-r--r--. 1 user group 0 Dec 14 14:32 "requests "

특정 파일을 삭제하려면 먼저 다음을 사용하여 해당 inode 번호를 찾으십시오 ls -li.

$ touch 'requests' 'requests '
$ ls -li
total 0
440 -rw-r--r--. 1 user group 0 Dec 14 14:32 requests
441 -rw-r--r--. 1 user group 0 Dec 14 14:32 requests

여기에는 두 개의 유사한 파일이 있습니다. 하나는 inode 440이고 다른 하나는 inode 441(왼쪽 열)입니다.

귀하의 경우 루트가 소유한 파일을 찾아 해당 inode 번호를 얻으십시오. -xdev(또는 -mount) 옵션은 find현재 디렉터리에 마운트된 파일 시스템이 있는 경우 해당 하위 파일 시스템에서 일치하는 파일을 캡처하지 않도록 동일한 파일 시스템을 유지한다는 의미입니다.

그 다음에:

$ find . -inum 441 -xdev -user root -ls
441    0 -rw-r--r--   1 user group 0 Dec 14 14:32 ./requests\

공백 문자 는 find끝에 인용되어 있습니다.

삭제:

$ find . -inum 441 -xdev -user root -delete  # GNU find

또는

$ find . -inum 441 -xdev -user root -exec rm {} \;  # otherwise

답변2

동일한 폴더에 동일한 이름을 가진 두 개의 파일이 있을 수 없습니다. 보이지 않는 문자(예: 후행 공백)가 있을 수 있습니다.

내 제안은 이름 requests을 바꾼 requests.real다음 대화형 삭제를 실행하는 것입니다. 원하지 않는 이름을 삭제하도록 선택한 다음 (필요한 경우) 와일드카드를 사용하여 다른 이름을 올바른 이름으로 바꿀 수 있습니다.

mv requests requests.real             # STOP if this fails
mv requests.archives KEEP.archives    # Temporary
rm -i req*                            # Interactive delete: "y" to delete, "n" to skip
mv req* requests                      # Rename whatever's left that begins "req"
mv KEEP.archives requests.archives    # Put this one back again

관련 정보