SSH는 ls가 존재한다고 나타내는 파일을 삭제할 수 없습니다.

SSH는 ls가 존재한다고 나타내는 파일을 삭제할 수 없습니다.

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:]]*

관련 정보