Sbarazzarsi di un file chiamato "-d" [duplicato]


18

Possibili duplicati:
come posso eliminare un file chiamato "-p" da bash?
Come eliminare un file con questo nome su Linux: -] ??????? q
Quale comando devo usare per rimuovere un file chiamato `-rf`?

Ho accidentalmente creato un file chiamato: -d

Ho provato a usare virgolette singole e doppie e caratteri jolly per rimuoverlo ma ogni volta che "rm" mi dà questo errore:

Avvertenza: l'opzione --directory (-d) non è documentata e non operativa. Usa -rf per cancellare dirs non vuoti rm: operando mancante Prova `rm --help 'per maggiori informazioni.

Come posso eliminare il file?

Risposte:


44
rm -- -d

--significa "fine delle opzioni". Tutto ciò che segue sulla riga di comando in seguito a questo viene interpretato come un argomento (cioè il nome del file nel tuo caso) e non un'opzione.



8

L'uso di "-" è di gran lunga il più semplice in questo caso specifico. Tuttavia, una soluzione più generale se ci si imbatte in un file con caratteri di controllo non stampabili è fare riferimento al file per inode:

% ls -ali aFileWithFunnyCharacters
      9215 -rw-r-----   1 chris  chris         0 Sep  8 16:55 aFileWithFunnyCharacters
% find . -xdev -inum 9215 -exec rm {} \;
% ls -ali aFileWithFunnyCharacters
aFileWithFunnyCharacters: No such file or directory

0

Gnu-find ha un'opzione -delete:

find -name "-d" -delete

altrimenti potresti provare

find -name "-d" -exec rm {} ";" 

ma la - soluzione dall'alto è più breve, e il modo per interrompere l'interpretazione delle bandiere - è usato da molti programmi, usando la libreria getopt, quindi l'apprendimento è una cosa utile in generale.

Ma find / -delete è qualcosa di molto utile da imparare. Nota che entrambi gli esempi elimineranno i file del nome "-d" in modo ricorsivo, il che potrebbe non accadere spesso, ma se ti capita di avere un file, chiamato "-d", potresti averne di più. :)

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.