Ho un file chiamato ~ (tilde) nella mia directory home


46

Ho appena notato che ho un file chiamato ~nella mia ~directory.

$ ls -la ~
...
-rw-r-----  1 x1 x1  733962240 Mar  1 17:55 ~
...

Qualsiasi idea di come posso mvo rmche?


Prova a eliminarlo tramite i-node.
gronostaj,

Risposte:


55

La soluzione praticamente definitiva quando si tratta di file che non possono essere eliminati con mezzi normali:

ls -il 

La prima colonna mostrerà il numero di inode dei file.

find . -inum [inode-number] -exec rm -i {} \;

Ciò eliminerà il file con il numero di inode specificato dopo la verifica.


Questo ha funzionato. Forse anche la soluzione di rici è buona, ma non ci ho provato. Molte grazie!
scrrr

Sì, anche la risposta di Rici è buona. E penso che sia meglio perché è più semplice.
Andrey Regentov,

bello, +1. Ho cambiato la tua risposta da usare -deleteinvece di -exec, poi ho capito che stavi usando rm -iquale è una buona idea, quindi sono tornato indietro. Scusate.
terdon,

Non ti preoccupare. Sempre contento quando qualcuno ritiene che le mie risposte siano degne del loro tempo :)
Squeezy,

Questa risposta non ha funzionato per me. Ubuntu 14.04 LTS
KhoPhi

46

Dovresti essere in grado di fare riferimento a quel file come ~/~(senza virgolette) perché l'espansione tilde applica solo la tilde ( ~) all'inizio della parola.


17
inoltre, andando nella cartella e rm ./~, per lo stesso motivo per cui hai detto
Carlos Campderrós,

@ CarlosCampderrós considera l'idea di dare una risposta. Lo considero la soluzione "migliore" e più semplice, rispetto ad altre risposte poiché ./~letteralmente significa "un file o una cartella nominati ~nella directory corrente" . Non ci sono hack come caratteri di escape o riferimenti agli inode.
ADTC

@ADTC: a difesa della mia risposta, non richiede la modifica del CWD, mentre l'utilizzo lo ./~fa. Dopo cinque anni, la mia memoria è un po 'confusa, ma penso sia per questo che ho suggerito ~/~piuttosto che il più normale ./~: la domanda si riferisce specificamente a "un file chiamato ~nella directory home di [OP] "; non "nella directory corrente".
rici,

@rici Questo ha senso, e nel contesto della domanda sarebbe appropriato. Ma mi piace vedere le risposte che sono generali, o parlare in generale prima di esporre di più sul caso specifico della domanda. Questa è la mia difesa: D
ADTC il

20

Quota ( rm '~') o scappa ( rm \~).


È sempre uno di quelli (anche per esempio $), oppure aggiungi --per impedire che il nome del file venga interpretato come argomento: rm -- -irimuove il file chiamato -i; utile anche per rm -- *quando si desidera eliminare tutti i file nella directory corrente: non accidentale rm -f *solo perché un file è chiamato così.


Hm, no che non sembra funzionare .. Ho provato le virgolette singole, le fughe e i backtick .. non prende il file. Dice che non esiste o interpreta ~ come home-directory ..
scrrr

@scrrr Qual è la tua shell?
Daniel Beck

bash. Ma il problema ha risolto il modo inode.
scrrr,

@scrrr Sono contento che il tuo problema sia stato risolto, ma ora voglio sapere perché gli escape di bash non funzionano allo stesso modo sul tuo sistema come sul mio.
Isaac Rabinovitch il

1
Attento. --impedisce solo che i seguenti argomenti vengano interpretati come parametri - non impedisce alla shell di eseguire la sua espansione (ad esempio *), che è ciò che sta accadendo qui. (So ​​che l'hai suggerito come alternativa per altre situazioni, ma un avvertimento sarebbe buono.)
Bob
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.