Come posso eliminare un file che è lì ma il sistema dice che non c'è?
Come posso eliminare un file che è lì ma il sistema dice che non c'è?
Risposte:
So che questo è vecchio, ma ho avuto lo stesso problema del tuo, solo con una cartella, non con un file. Nessuno dei metodi suggeriti qui ha funzionato.
Sono riuscito a risolvere il problema creando una cartella nella stessa posizione e con lo stesso nome di quella che non potevo eliminare. La cartella è stata creata correttamente e ha "sostituito" quella inesistente. Quindi ho semplicemente rimosso la nuova cartella e il problema era scomparso. Semplice come quella.
Ho avuto lo stesso problema. Si è verificato un problema con le voci di indice della partizione. L'ho risolto avviando Windows se il tuo sistema è a doppio avvio o inserisci un CD live di Windows XP o Windows 7, quindi esegui i seguenti passaggi:
cmd
fai clic con il pulsante destro del mouse -> Esegui come amministratore. chkdsk /f/x D:
(dove D è la tua lettera di unità). 100% funzionante
Avvertenza: queste istruzioni ne richiederanno una da utilizzare
debugfs
. Possono causare la perdita di dati.Sono adattati al problema originale e potrebbero o meno essere precisi per i futuri visitatori di questa pagina. Qualsiasi perdita di dati può essere irreparabile o addirittura aggravata da
fsck
.
Potrebbe essere un inode perso. Esegui ls -li
per ottenere un elenco di numeri di inode, quindi puoi provare a scaricare l'inode di riferimento. Ad esempio, se il tuo ls -li
aspetto è il seguente:
rarkenin@ubuntu-alt-64-vbox-1:~$ ls -li
total 58672
4980758 -rwxr-xr-x 2 rarkenin rarkenin 4096 Sep 23 18:45 panorama.jpg
---SNIP---
quindi il numero di inode è 4980758 come mostrato nell'elenco come prima colonna.
Puoi quindi provare a scaricare l'inode. Si prega di leggere l'intero post prima di fare qualsiasi cosa .
Inizia debugfs
come root:
rarkenin@ubuntu-alt-64-vbox-1:~$ sudo debugfs
[sudo] password for rarkenin:
debugfs 1.42 (29-Nov-2011)
debugfs:
e dai il comando open /dev/sda1
con il dispositivo a blocchi corretto per la tua partizione.
Quindi, dai il comando di scaricare l'inode di cui hai ottenuto il numero in precedenza:
cat <4980758>
usando <
e >
intorno al numero dell'inode.
Se legge del testo casuale, chiudi il terminale e aprilo di nuovo. Esegui di debugfs
nuovo e restituisci il open
comando.
Ora puoi provare a eliminare il file. Ciò può causare gravi danni al filesystem.
debugfs: rm [filename]
debugfs: unlink [filename]
debugfs: kill_file [filename]
debugfs: kill_file <inode>
Si noti che ciò può essere fatto anche se risulta che il file non ha mai avuto un inode. Prova i comandi uno alla volta, nell'ordine mostrato sopra. Esci da debugfs e controlla se il file esiste. In caso contrario, ricominciare ma seguire le istruzioni successive.
debugfs
è destinato esclusivamente ai tipi di filesystem ext2, ext3 ed ext4.
mostraci il terminale .... fai un ll | grep panorama
e mostracelo; aggiungilo alla tua domanda ...
Il mio suggerimento è di fare come root rm -f panorama.jpg
.
nell'uomo di rm ho trovato questo:
-f, --force
ignore nonexistent files, never prompt
Prima accedi come root con sudo -s
Puoi provare a fare rm -v <file>
e guardare l'output dettagliato per vedere cosa sta succedendo mentre sta cercando di rimuovere il file. Controlla le opzioni per il comando di seguito.
Se fallisce, puoi usare l'opzione force come hanno detto tutti gli altri. Puoi anche provare a rimuovere l'intera directory forzando una rimozione ricorsiva:rm -rfv **full directory address here**
Dalla guida ai comandi UNIX:
SINOSSI
rm [OPTION]... FILE...
DESCRIZIONE
rm removes each file. By default, it does not remove directories.
If a file is unwritable, the standard input is a tty, and the -f or
--force option is not given, rm prompts the user for whether to remove
the file. If the response is not affirmative, the file is skipped.
OPZIONI
Remove (unlink) the FILE(s).
-f, --force
ignore nonexistent files, never prompt
-i, --interactive
prompt before any removal
--no-preserve-root do not treat '/' specially (the default)
--preserve-root
fail to operate recursively on '/'
-r, -R, --recursive
remove directories and their contents recursively
-v, --verbose
explain what is being done
--help display this help and exit
--version
output version information and exit
By default, rm does not remove directories. Use the --recursive (-r or
-R) option to remove each listed directory, too, along with all of its
contents.
To remove a file whose name starts with a '-', for example '-foo', use
one of these commands:
rm -- -foo
rm ./-foo
Note that if you use rm to remove a file, it is usually possible to
recover the contents of that file. If you want more assurance that the
contents are truly unrecoverable, consider using shred.
Guardando i tuoi screenshot vedo che hai il gruppo impostato come root. Proverei a usare chown e vedo se risolve il problema.
sudo chown -hR [username]:[username] /home/[username]
Sostituendo [nome utente] con il tuo nome utente.
Riceverai un paio di errori.
I caratteri non stampati nei nomi dei file possono causare tali problemi, ad esempio uno spazio. Prova l'opzione interattiva di rm e dì 'Y' al file che vuoi eliminare "
rm -i" * pan * "Nota l'uso di * s per far corrispondere qualsiasi carattere (anche non-printint).
Potrebbe essere l'inode ha è stato rimosso, ma non la voce della directory. Prova ls -i per vedere gli inode. Cerca il file system per risolvere questo tipo di problema.
Prova in questo modo:
cd dir-to-delete
find ./ -exec rm -rf {} \;
Ho avuto lo stesso problema con il file creato dalla base web personalizzata EMR (cartella clinica elettronica) sotto Chrome. sudo touch /forcefsck
seguito da riavvio ha funzionato per me e file cancellato aromaticamente. Preso il modulo di aiuto nelle pagine seguenti
Linux Mint 18.3 Il mio file inesistente era ¨nomefile.pdf.crdownload¨ Viene visualizzato sul mio desktop come pacchetto, ovvero un file zip in Windows. Per diamine ho fatto clic destro, Proprietà, Apri con, che mostrava zero app, quindi l'ho cambiato in Apri con ¨Archive Manager¨. Immediatamente il file è scomparso dal mio desktop. kb