Basta excluir o arquivo da interface do usuário como Mover para a lixeira. e depois ir para o lixo e excluir a partir daí. Este processo irá excluir permanentemente o seu arquivo do seu sistema linux.
Eu apenas executei um programa auto-escrito no qual faço arquivos e preencho-os com coisas. No entanto, eu fiz algo errado (ou, pelo menos, não como pretendido) com a geração de nomes e agora há quatro arquivos presos na pasta que não podem ser removidos, pois eles 'não existem'.
Saídas de comandos:
ls -li
:
ls: cannot access één: No such file or directory
ls: cannot access wetenschapÂpen.: No such file or directory
ls: cannot access verantwoorÂdelijk: No such file or directory
ls: cannot access woord wordt: No such file or directory
total 0
? -????????? ? ? ? ? ? één
? -????????? ? ? ? ? ? woord wordt
? -????????? ? ? ? ? ? verantwoorÂdelijk
? -????????? ? ? ? ? ? wetenschapÂpen.
rm -i -- *
:
rm: remove regular file 'één'? y
rm: cannot remove 'één': No such file or directory
rm: remove regular file 'woord wordt'? y
rm: cannot remove 'woord wordt': No such file or directory
rm: remove regular file 'verantwoorÂdelijk'? y
rm: cannot remove 'verantwoorÂdelijk': No such file or directory
rm: remove regular file 'wetenschapÂpen.'? y
rm: cannot remove 'wetenschapÂpen.': No such file or directory
rm -rf folder
: (com 'pasta' sendo a pasta em que os arquivos residem)
rm: cannot remove 'folder': Directory not empty
find . -type f -delete
: (a partir da resposta de Uditha Desilva)
find: cannot delete './één': No such file or directory
find: cannot delete './wetenschapÂpen.': No such file or directory
find: cannot delete './verantwoorÂdelijk': No such file or directory
find: cannot delete './woord wordt': No such file or directory
strace -o out rm -f -- *
: Conteúdo de fora
Como posso remover esses arquivos?
Importante notar é que eu não tenho acesso root, então eu preferiria uma opção que não exija isso.
Esse comportamento é devido à falta de permissão de execução no diretório, o usuário não pode fazer um stat()
, mas pode ler as entradas dir.
Para evitar isso, você pode fazer chmod 700
no diretório principal.
Para reproduzir novamente esse comportamento, você pode fazer um chmod 600
ou chmod 400
em qualquer diretório e terá o mesmo problema.
$ chmod 400 folder
$ ls - ltr folder
-????????? ? ? ? ? ? omd
-????????? ? ? ? ? ? file5
-????????? ? ? ? ? ? file4
-????????? ? ? ? ? ? file3.txt
-????????? ? ? ? ? ? file2.txt
$ chmod 700 folder
$ ls - ltr folder
-rw-rw-r-- 1 tachomi tachomi 2 Mar 2 08:53 file4
-rw-rw-r-- 1 tachomi tachomi 2 Mar 2 08:53 file5
-rw-rw-r-- 1 tachomi tachomi 0 Mar 2 08:53 omd
-rw-rw-r-- 1 tachomi tachomi 2 Mar 2 09:01 file1.txt
-rw-rw-r-- 1 tachomi tachomi 2 Mar 2 09:01 file2.txt
Dê uma chance
É quase como se você tivesse conseguido escrever lixo no diretório inode em vez de em arquivos dentro dele. No entanto, tente
find . -type f -delete
que não tenta fazer expansões de shell dos arquivos e pode assim ter sucesso.
EDIT: A resposta por tachomi parece ser a explicação mais provável, mas não é possível "cd" em um diretório com o modo 400, ou listar o seu conteúdo "uma vez que você está nele, de modo que não se encaixa perfeitamente:
$ chmod 400 test
$ ls -li test
ls: cannot access test/Pictures: Permission denied
ls: cannot access test/Music: Permission denied
ls: cannot access test/Shows: Permission denied
ls: cannot access test/TV: Permission denied
ls: cannot access test/Movies: Permission denied
total 0
? -????????? ? ? ? ? ? Movies
? -????????? ? ? ? ? ? Music
? -????????? ? ? ? ? ? Pictures
? -????????? ? ? ? ? ? Shows
? -????????? ? ? ? ? ? TV
$ cd test
bash: cd: test: Permission denied
$ chmod 700 test
$ cd test
$ ls -li
total 0
267447 -rw-r--r-- 1 abcd abcd 0 Mar 3 19:45 Movies
267448 -rw-r--r-- 1 abcd abcd 0 Mar 3 19:45 Music
267449 -rw-r--r-- 1 abcd abcd 0 Mar 3 19:45 Pictures
267451 -rw-r--r-- 1 abcd abcd 0 Mar 3 19:45 Shows
267450 -rw-r--r-- 1 abcd abcd 0 Mar 3 19:45 TV
No entanto, a exclusão pode ter funcionado se o processo de exclusão da GUI alterasse as permissões do diretório "nos bastidores" antes da remoção.