">" 또는 기타 특이한 문자로 시작하는 파일을 삭제하는 방법

">" 또는 기타 특이한 문자로 시작하는 파일을 삭제하는 방법

실수로 라는 파일을 만들었습니다.

> option[value='2016']

어떻게 삭제할 수 있나요?

My attempts:

$ rm "> option[value='2016']"
rm: cannot remove ‘> option[value='2016']’: No such file or directory
$ rm \> o*
rm: cannot remove ‘>’: No such file or directory
rm: cannot remove ‘o*’: No such file or directory
$ rm `> o*`                                                                               
rm: missing operand
Try 'rm --help' for more information.
$ rm \> option*
rm: cannot remove ‘>’: No such file or directory
rm: cannot remove ‘option*’: No such file or directory
$ rm '\> option*'                                                                         
rm: cannot remove ‘\\> option*’: No such file or directory
$
$ rm "\> option*"                                                                         
rm: cannot remove ‘\\> option*’: No such file or directory

문서 목록:

HAPPY_PLUS_OPTIONS/
o*
op*
> option[value='2016']
> option[value='ALFA ROMEO']
README.md
rspec_conversions/
.rubocop.yml
SAD/
SAD_PLUS_OPTIONS/

답변1

다른 옵션

ls -i 

주어진 (적절한 inode 값으로)

5233 > option[value='2016']   5689 foo

그 다음에

find . -inum 5233 -delete

선택사항(미리보기)

find . -inum 5233 -print

-xdev아래에 다른 파일 시스템이 있는 경우 추가할 수도 있습니다.

답변2

man에 따르면 "--" 옵션을 사용할 수도 있습니다.

 The rm command uses getopt(3) to parse its arguments, which allows it to
 accept the `--' option which will cause it to stop processing flag options at
 that point.  This will allow the removal of file names that begin with a dash
 (`-').  For example:
       rm -- -filename

그래서 나는 다음을 시도한다:

touch -- "> option[value='2016']"

삭제하세요.

rm -- "> option[value='2016']"

파일 이름이 올바르게 입력되었는지 확인하는 가장 쉬운 방법:

rm -- ">[tab]

그리고 자동 완성 기능이 작업을 수행하도록 하세요.

추신: 들리는 것처럼 "-rf*"라는 파일 이름을 만들지 마십시오. 나쁜 일이 일어날 수 있습니다.

-rw-r--r--    1 stephan  staff      0 Sep 13 14:11 -rf *

안전을 유지하려면 항상 "-i"를 사용하십시오.

iMac:~ stephan$ rm -i -- "-rf *"
remove -rf *? Y

답변3

원래 문제는 선행 공백이었으므로

rm " > option[value='2016']"
    ^ here

일하다.

> 등으로 시작하는 파일에 관한 질문이 업데이트되었습니다.

답변4

rm거기에는 마법 같은 것이 전혀 없기 때문입니다 >. 꺾쇠 괄호가 여기에 도달하는지 확인하기만 하면 됩니다(=셸이 이를 리디렉션으로 해석하지 못하도록 방지).

> "> option[value='2016']"  #create it
rm "> option[value='2016']" #remove it

#remove all files in the current directory that have > in them
rm -- {,.}*\>*                 

합리적인 최신 시스템을 사용한다면 탭 완성을 통해 적절하게 이스케이프된 이름을 얻을 수 있어야 합니다.

관련 정보