SSH를 통해 삭제할 수 없는 파일이 있습니다.
디렉토리에서 명령을 실행하면 분명히 존재하지만 ls
파일에서 실행하려고 하면 다음과 같이 표시됩니다.rm
cannot remove 'database.sql': No such file or directory
해당 파일과 폴더에 대한 권한을 확인해 보면 이므로 777
삭제 권한이 있어야 합니다.
실행하면 lsattr
다음과 같이 알려줍니다.
No such file or directory While reading flags on ./database.sql
마지막으로 다시 실행하려고 하면 다음과 같이 rm .
표시됩니다.
rm: cannot remove 'database.sql': No such file or directory
어쨌든 둘 다 파일이 거기에 있다는 것을 알고 있지만(많은 명령이 파일을 "봅니다") 삭제할 수 없습니다.
all-in-one-wp-migration/storage/sgmq5lpwyiio>ls -l
total 2327360
-rwxrwxrwx 1 nobody nogroup 2383152307 Jun 3 05:56 database.sql
all-in-one-wp-migration/storage/sgmq5lpwyiio>rm database.sql
rm: cannot remove 'database.sql': No such file or directory
all-in-one-wp-migration/storage/sgmq5lpwyiio>lsattr
lsattr: No such file or directory While reading flags on ./database.sql
all-in-one-wp-migration/storage/sgmq5lpwyiio>rm *.*
rm: cannot remove 'database.sql': No such file or directory
all-in-one-wp-migration/storage/sgmq5lpwyiio>
답변1
일종의 와일드카드를 사용하여 목록을 완성하는 동안 인쇄된 파일 이름 어딘가에 예상치 못한 눈에 띄지 않는 공백이나 탭이 있을 때 비슷한 문제가 발생했습니다. 일부 셸에서는 명령줄에서 파일 이름 뒤에 탭 문자를 입력하면 보이지 않는 문자로 끝이 채워집니다. wc -c
파일 이름의 문자 수를 사용하여 이를 확인할 수 있으며 \n
항상 계산되는 인쇄되지 않은 문자를 확인할 수 있습니다.
답변2
파일 소유자와 그룹이 "nobody" 및 "nogroup"으로 설정되어 있기 때문일 수 있습니다. "nobody" 사용자 및 "nogroup" 사용자 그룹은 시스템에 대해 가능한 최소 권한을 갖습니다. 하지만 그래도 파일을 삭제할 수는 있습니다.
파일이 있는 디렉터리에 대한 쓰기 권한이 있습니까? 파일을 삭제하려면 디렉터리에서 항목을 제거하기 때문에 디렉터리에 대한 쓰기 권한이 필요할 수도 있습니다. 파일을 편집해 보셨나요? 디렉터리에는 쓰기 권한이 없을 수 있지만 파일에는 쓰기 권한이 있을 수 있습니다.
위의 설명에서 언급했듯이 이는 파일 또는 시스템 손상일 수도 있고, 서비스가 실행 중이고 파일을 사용하고 있을 수도 있습니다.
chown
귀하를 chgrp
그룹의 소유자 및 소유자 그룹으로 만들어 보십시오 .
답변3
파일 이름이 올바르지 않거나 일부 정크 문자가 포함되어 있을 수 있습니다.
노력하다
find . -maxdepth 1 -exec printf "'{}'\n" \;
또는
이름에 정크 또는 공백이 있는 파일만 나열
printf '%q\n' *[\?\$\*%[:space:]]*