“>”라는 파일을 어떻게 삭제합니까?


22

나는 오작동하여 sudo라는 파일을 만드는 데 사용되는 Python 스크립트를 실행 중이었습니다 >.

이 파일을 어떻게 제거 할 수 있습니까?

물론을 시도하면의 출력을 리디렉션하려고한다고 생각하기 때문에 sudo rm >오류가 발생 합니다.bash: syntax error near unexpected token 'newline'rm

권한은 -rw-r--r--입니다.


10
물론 대답은 옳지 만 일반적으로 이것을 고려할 수 있습니다. 처음에는 파일이 어떻게 만들어 졌습니까? (물론, sudo touch >쉘에서 동일한 오류가 발생합니다.) 당신은 아마도 ">"어떤 os함수 에 전달함으로써 생성 된 파이썬 스크립트와 함께 있다고 말했습니다 . 따라서 sudo python <<< 'import os; os.remove(">")'잘 작동합니다.
wchargin

4
이것은 말 그대로 특정 이름의 파일을 삭제할 수 없습니다 창에서 하나의 버그를 생각 나게했다 (그러나 그것을 만드는 아무 문제가 없었다.)
PyRulez

PyRulez 어?
Austin Burk

8
아이러니하게도, 그 답은 자신이 쓴 제목에 있습니다.
Raphael

답변:


54

다음 중 하나가 작동해야합니다.

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

를 사용하는 마지막 두 명령 은 현재 폴더와 모든 하위 폴더에 이름이 지정된 모든 파일 또는 디렉토리를 find찾습니다 . 이를 피하려면 GNU find를 사용하십시오.>

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

2
그 밖으로 아마 가치가 가리키는 것 find처럼되지 rm는 재귀 있기 때문에 삭제하지 않습니다 모든 라는 이름의 파일이 rm얼마나 깊은 상관없이 현재 디렉토리 나무 아래를.
jw013

6
@rahul 처음 세 개 ( rm변형)는 모두 동일합니다. 셸에서 해당 파일 이름을 보호하는 세 가지 방법 일뿐입니다. 실제로 서로 선호하는 이유는 없습니다.
derobert

7
왜 제안 find(1)합니까? 여기서 유일한 문제는 쉘 메타 문자를 인용해야한다는 것입니다. 파일을 제거 할 수있는 백만 및 하나의 다른 프로그램이 있지만 rm(1)답을 난독 화하는 것 이외의 다른 것을 사용 합니다.
camh

2
재귀를 피하기 위해 GNU find가 필요하지 않습니다. sudo find . ! -name . -prune -name '>' -exec rm {} +.
hvd

2
@camh에 동의하며 find, 질문에 대답하는 데 아무것도 추가하지 않습니다.
Paul Draper 2016 년

18

파이썬을 사용하여 제거 할 수도 있습니다.

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

POSIX로 find:

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

3
왜 귀찮게? 쉘은 >출력 경로 재 지정으로 해석하지 않는 많은 방법을 제공합니다 .
Alexis

3
@alexis imo 이러한 간단한 작업을 가능한 한 많이 수행하는 방법을 아는 것이 가장 좋습니다. op가 쉘을 사용하여 순전히 해결하기 어려운 다른 문제가있는 경우 도구 상자에 다른 도구를 사용하여 시도해 볼 수 있습니다
undergroundmonorail

1

내가 처음에했던 일도 효과가 있습니다.

sudo sh -c "rm \>"

물론 이것은 더 간단한 변형입니다 sudo rm \>.


0

나는 이것을 주석으로 시도했지만 한 줄에 모두 나왔다.

[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]~% 

이것은 이미 terdon의 대답에 있습니다 ...
John WH Smith

예, 그것은 부분적으로 힘줄의 대답으로 주어졌으며, 나는 단지이 순서가 단순하고 그것을 명시 적으로 생각했다고 생각합니다. 보시다시피 답변이 아닌 주석으로 포함하려고 시도했지만 한 줄에 모두 나오는 것을 피하는 방법을 모르겠습니다. 또한 파일을 작성하기 위해 파이썬이 필요하지 않음을 보여줍니다. 다른 의견에서도 제안되었습니다.
Harry Weston

0

셸에서 문자를 리디렉션으로 해석하지 않도록 문자를 인용하십시오.

sudo rm '>'

그러나 이상한 문자를 가진 다른 파일이있는 경우 가장 안전한 방법은 GUI 파일 탐색기를 열고 nautilus삭제하는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.