¿Cómo puedo eliminar un archivo llamado ">"?


22

Estaba ejecutando un script de Python que no funcionaba bien y solía sudocrear un archivo llamado >.

¿Cómo puedo deshacerme de este archivo?

Por supuesto, cuando lo intento sudo rm >, aparece el error bash: syntax error near unexpected token 'newline', porque cree que estoy tratando de redirigir la salida de rm.

Sus permisos son -rw-r--r--.


10
Las respuestas son correctas, por supuesto, pero en general podría considerar esto: ¿cómo se creó el archivo en primer lugar? (Por supuesto, sudo touch >en un shell daría el mismo error.) Dijiste que era con un script de Python, presumiblemente creado al pasar ">"a alguna osfunción. Entonces sudo python <<< 'import os; os.remove(">")'debería funcionar bien.
wchargin

44
Esto me recordó un error en ventanas en las que, literalmente, no podía borrar un archivo con un nombre determinado (pero no había ningún problema por lo que es.)
PyRulez

PyRulez ooh, cual?
Austin Burk

8
Irónicamente, la respuesta está en el título que escribiste tú mismo.
Raphael

Respuestas:


54

Cualquiera de estos debería funcionar:

sudo rm \>
sudo rm '>'
sudo rm ">"
sudo find . -name '>' -delete
sudo find . -name '>' -exec rm {} +

Tenga en cuenta que los dos últimos comandos, los que usan find, encontrarán todos los archivos o directorios nombrados >en la carpeta actual y todas sus subcarpetas. Para evitar eso, use GNU find:

sudo find . -maxdepth 1 -name '>' -delete
sudo find . -maxdepth 1 -name '>' -exec rm {} +

2
Probablemente valga la pena señalar que findno es así rmporque es recursivo y eliminará todos los archivos nombrados rmbajo su árbol de directorios actual, sin importar cuán profundo sea.
jw013

66
@rahul Las tres primeras (las rmvariantes) son todas iguales. Son solo tres formas diferentes de proteger ese nombre de archivo del shell. Realmente no hay una razón para preferir uno sobre otro.
derobert

77
¿Por qué sugieres find(1)? El único problema aquí es que es necesario citar un metacarácter de shell. Hay un millón y uno de programas diferentes que pueden eliminar un archivo, pero usar otra cosa que no rm(1)sea ​​ofuscar la respuesta.
camh

2
No necesita GNU find para evitar recurrencias. sudo find . ! -name . -prune -name '>' -exec rm {} +.
hvd

2
Estoy de acuerdo con @camh, findno agrega nada para responder la pregunta que se hace.
Paul Draper

18

También puedes usar Python para eliminarlo:

python -c 'import os;os.remove(">")'

Con POSIX find:

find . ! -name . -prune -type f -name '>' -exec rm -f {} +

3
¿Por qué molestarse? El shell proporciona muchas formas de evitar interpretar >como redirección de salida.
alexis

3
@alexis imo es mejor saber tantas formas de lograr estas tareas simples como sea posible. si op tiene otro problema como este que es más difícil de resolver simplemente con el shell, tendrán otra herramienta en su caja de herramientas para intentarlo
undergroundmonorail

1

Lo que terminé haciendo inicialmente también funciona:

sudo sh -c "rm \>"

Esto es, por supuesto, una variante del más simple sudo rm \>.


0

Intenté esto como un comentario, pero salió todo en una línea

[Harry@localhost]~% touch ">"
[Harry@localhost]~% cat > ">"
line 1
line 2
[Harry@localhost]~% cat ">"
line 1
line 2
[Harry@localhost]~% ls -l ">"
-rw-r--r-- 1 Harry Harry 14 Jun  5 12:04 >
[Harry@localhost]~% rm ">"
[Harry@localhost]~% ls -l ">"
ls: cannot access >: No such file or directory
[Harry@localhost]~% 

Sin embargo, esto ya está en la respuesta de terdon ...
John WH Smith

Sí, en parte se da en la respuesta del tendón, estoy de acuerdo, solo pensé que esta secuencia es simple y la hice explícita. Como verá, traté de incluirlo como un comentario en lugar de una respuesta, pero no sé cómo evitar que todo salga en una línea. También muestra que no necesita Python para crear el archivo, otro punto también sugerido en otros comentarios.
Harry Weston

0

Cita el personaje para que el shell no lo interprete como una redirección:

sudo rm '>'

Sin embargo, si tiene otros archivos con caracteres extraños, el método más seguro es abrir un explorador de archivos GUI como nautilusy eliminarlo allí.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.