it-swarm-ko.tech

이름이 "-"(하이픈 a.k.a. 대시 또는 마이너스)로 시작하는 파일을 어떻게 삭제합니까?

파일 이름이 대시 (하이픈 또는 빼기)로 시작하는 파일을 제거하는 방법 -? 나는 원격 OSX 서버에 ssh'd 있고 내 디렉토리 에이 파일이 있습니다 :

tohru:~ $ ls -l
total 8
-rw-r--r--    1 me  staff  1352 Aug 18 14:33 --help
...

세상에서 어떻게 --help CLI에서? 이 문제는 때때로 다른 형태로 발생하는 파일입니다.이 파일은 작성하기 쉽지만 제거하기는 어렵습니다.

백 슬래시를 사용해 보았습니다.

rm \-\-help

나는 따옴표를 시도했다

rm "--help"

빼기 (대시 또는 하이픈) 문자가 옵션으로 해석되지 않도록하려면 어떻게해야합니까?

377
Bryan Rehbein

"-"를 사용하여 다음과 같이 rm 구문 분석 명령 행 옵션을 작성하십시오.

rm -- --help
559
Vegar Nilsen

아니면 할 수 있습니다

rm ./--help
236
edfuh

find를 사용하여 수행하십시오.

find . -name '--help' -delete

삭제가 가능한 파일이 몇 개 더 있으면 -delete 옵션없이 find를 먼저 실행하여 파일의 미리보기 목록을 얻을 수 있고 목록이 파일이 좋아 보이면 -delete로 다시 실행하면됩니다.

실제로 rm (특히 미리보기를 선호 함)에 찬성하여 find를 피하는 것은 언젠가는 당신을 물릴 수있는 rm *의 실수를 피하는 데 도움이되는 좋은 습관입니다. .

그러나 find는 모든 서브 디렉토리를 통해 재귀하므로, 다음과 같이 서브 디렉토리 깊이 제한 조건으로이를 실행할 수 있습니다.

find . -maxdepth 1 -name '--help' -delete

현재 디렉토리로 찾기를 제한합니다.

41
aculich

Vegar Nilsen과 edfuh의 답변은 매우 좋으며 이와 같은 문제에 대한 적절한 해결책입니다.

어려운 파일 이름을 가진 any 파일을 삭제할 수있는이 질문에 대한 일반적인 응답을 추가하고 싶습니다. 먼저 ls -i 또는 stat 형식을 사용하여 inode 번호를 얻은 다음 현재 디렉토리에서 inode 번호로 파일을 검색하고 rm 명령을 실행하여 파일을 제거합니다. 일치하는 inode 번호를 가진 파일

find . -inode <inode> -exec rm {}\;

Inode 번호는 각 파일 시스템마다 고유하므로이를 사용하여 파일을 제거 할 수 있습니다. 유니 코드 또는 이스케이프 문자 사용 입력하는 것이 매우 성가 시므로 줄을 추가하는 것이 좋습니다.

TAB: menu-complete             # Tab: Cycles through the command
"\e[Z": menu-complete-backward # Shift-Tab: Cycles backwards

bash를 사용하고 있다면 .inputrc 파일에 넣으십시오. 이를 통해 가능한 완료 목록 ( 추가 정보 )을 순환 할 수 있습니다.

21
Baldur

잔인한 해결책 :

Perl -e "unlink '--help' or die 'Could not unlink.';"

Perl -e "rmdir '-d' or die 'Could not rmdir.';"
11
Thomas L Holaday

Linux 대시와 공백이있는 파일을 만든 다음 제거하는 연습.

조심해! 실수로 rm -rf / 또는 유사한 계단식 삭제 명령입니다.

제거하려는 파일에 별표 나 슬래시가 포함되어 있으면 실수로 . 또는 /* 또는 * 또는 다른 와일드 카드로 운영 체제를 캐스케이드 삭제할 수 있습니다.

"-yo yo"라는 파일을 만듭니다

[email protected] ~ $ touch -- "--yo yo"
[email protected] ~ $ ls
bin  --yo yo

먼저 find로 찾으십시오 :

[email protected] ~ $ find . -name "*--yo yo*"
./--yo yo

Find 명령 만 삭제하려는 하나의 파일 만 찾습니다.

그런 다음 -delete 옵션을 전달하여 삭제합니다.

[email protected] ~ $ find . -name "*--yo yo*" -delete
[email protected] ~ $ ls
bin  

Aaaannd 사라졌습니다.

8
Eric Leschinski

자정 사령관 (mc)이 가장 쉬운 방법입니다.

2
Marcin

이 스레드를 찾기 전에 사용한 솔루션이 있습니다.
_ 디렉토리를 '편집'하려면 vim를 사용하십시오.

vim .

그런 다음 (vim에서) 파일을 선택하고 del을 누르고 삭제를 확인하십시오.
완료되면 :q로 vim을 종료하십시오!

1
atti

디렉토리 이름을 접두어로 추가하려고 했습니까?

$ rm ./-filename.txt dirname/-filename2.txt
$ mv ./-filename.txt filename.txt
$ cp teste ./-teste

일반적으로 디렉토리를 파일의 접두사로 사용하면 구문 분석기 기능에서 "빼기"문자를 명령 옵션으로 잘못 해석하지 않아도됩니다.