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.