Elimina tutti i file che iniziano con un punto interrogativo


23

Ho una cartella in cui ho circa 4k file. Alcuni di questi file iniziano con aa ?o !carattere. Devo eliminarli ma non riesco a trovare un'espressione che lo farebbe:

rm -f ./?*

elimina tutto. Posso probabilmente usare grepsu ls e reindirizzarlo xargse spostare i file in un'altra cartella, ma speravo che ci fosse un modo corretto di farlo. Bisogno di aiuto su entrambi i ?e !file.

Risposte:


26

Non c'è bisogno di cose fantasiose. Basta sfuggire a in ?modo che non sia considerato parte del glob:

rm -f ./\?*

Questo funziona !anche per :

rm -f ./\!*

O in un colpo solo:

rm -f ./{\?,\!}*

Aggiornare

Ho appena notato che stavi suggerendo grepl'output di ls. Volevo attirare la tua attenzione sul fatto che non dovresti analizzare l'output di ls


4
@recluze Non stupido; è tutt'altro che ovvio come farlo se non si conosce la fuga con caratteri jolly.
un CVn

@recluze Ti senti ancora stupido dopo 5 voti sulla tua domanda? :) A proposito, vedi la risposta aggiornata.
Joseph R.,

Grazie e grazie :) ... Era a conoscenza dei problemi nell'output di ls ma i miei file avevano uno schema particolare su cui potevo contare. Tuttavia, buono a sapersi :)
ricollegare il

13

Nel mio caso, i personaggi non erano in realtà punti interrogativi, ma personaggi unicode che apparentemente non potevano essere visualizzati nella mia console.

Usando ha rm -i *funzionato per me. Se non si desidera eseguire questa operazione, è anche possibile eliminare per inode, come descritto in http://www.cyberciti.biz/tips/delete-remove-files-with-inode-number.html .

Per trovare l'inode, utilizzare:

ls -il

Quindi fa:

find . -inum [inode-number] -exec rm -i {} \;
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.