Alcuni altri metodi includono:
sfuggendo ai caratteri speciali:
[~]$rm \"la\*
usa il comando find e cerca solo nella directory corrente. Il comando find può cercare numeri di inode e ha un pratico -delete
interruttore:
[~]$ls -i 7404301 "la* [~]$find . -maxdepth 1 -type f -inum 7404301 ./"la* [~]$find . -maxdepth 1 -type f -inum 7404301 -delete [~]$ls -i [~]$
Forse mi sto perdendo qualcosa, ma...
rm '"la*'
Ad ogni modo, i nomi dei file non hanno inode, i file sì. Cercare di rimuovere un file senza rimuovere tutti i nomi di file che puntano ad esso danneggerà il tuo filesystem.
Se davvero vuoi farlo - e il tuo caso d'uso non sembra affatto necessario, potresti provare gli strumenti di debug del file system. Se sei disposto a perdere tutto, cioè.
Ad esempio, per ext2/3/4 il debugfs
Il comando ha un'opzione "kill_file" che sembra prendere un inode. Come menzionato in altre risposte, questo sarà danneggiare il tuo file system, poiché ci saranno voci di directory che puntano a un file inesistente. Esecuzione di fsck
in seguito potrebbe essere in grado di riparare questo problema. È improbabile che tu possa farlo su un file system montato.
Ma lo consiglio vivamente basta usare l'escape/quoting appropriato ed eliminare tali file con il normale rm
comando come menzionato in una risposta precedente - e usa rm -i
per maggiore sicurezza quando si ha a che fare con nomi di file contenenti caratteri glob come *