파일 이름이 대시 (하이픈 또는 빼기)로 시작하는 파일을 어떻게 제거 -
합니까? 원격 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"
빼기 (대시 또는 하이픈) 문자가 옵션으로 해석되지 않도록하려면 어떻게해야합니까?
답변
“-“를 사용하여 다음과 같이 rm 구문 분석 명령 행 옵션을 작성하십시오.
rm -- --help
답변
아니면 할 수 있습니다
rm ./--help
답변
find
그것을하기 위해 사용하십시오 :
find . -name '--help' -delete
그리고 이것은 당신이 삭제할 수있는 이와 같은 몇 개 이상의 파일이있는 -delete
경우 먼저 옵션 없이 find를 실행하여 파일의 미리보기 목록을 얻을 수 있고 파일 목록이 좋아 보이는 경우 실행됩니다 와 함께 다시 -delete
.
사실, 당신 rm
은 find
(특히 미리보기 를 선호) 선호 하지 않는 rm *
것은 언젠가는 당신을 물린 실수를 피하는 데 도움이되는 좋은 습관 입니다.
그러나 find는 모든 서브 디렉토리를 통해 재귀하므로, 다음과 같은 서브 디렉토리 깊이 제한 조건으로이를 실행할 수 있습니다.
find . -maxdepth 1 -name '--help' -delete
현재 디렉토리로 찾기를 제한합니다.
답변
Vegar Nilsen과 edfuh의 답변은 매우 좋으며 이와 같은 문제에 대한 적절한 해결책입니다.
난 당신이 삭제할 수 있습니다이 질문에 일반적인 응답을 추가하고 싶어 어떤 어려운 파일 이름으로 파일을. 먼저 inode 번호는 ls -i
형식 또는 형식을 사용하여 얻은 stat
다음 현재 디렉토리에서 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
.inputrc
bash를 사용하는 경우 파일 에 넣으십시오 . 이를 통해 가능한 완료 목록 을 자세히 볼 수 있습니다 ( 자세한 내용은 ).
답변
잔인한 해결책 :
perl -e "unlink '--help' or die 'Could not unlink.';"
perl -e "rmdir '-d' or die 'Could not rmdir.';"
답변
Linux 대시와 공백이있는 파일을 만든 다음 제거하는 연습.
조심해! 실수로 rm -rf /
유사한 캐스케이드 삭제 명령을 실행하지 마십시오 .
제거하려는 파일이 별표 (*) 또는 슬래시가 포함 된 경우, 실수로 펌프하지 않는다 .
거나 /*
또는 *
운영 체제를 삭제 계단식 수 또는 다른 와일드 카드.
“–yo yo”라는 파일을 만듭니다.
eric@dev ~ $ touch -- "--yo yo"
eric@dev ~ $ ls
bin --yo yo
먼저 찾기로 찾으십시오.
eric@dev ~ $ find . -name "*--yo yo*"
./--yo yo
find 명령 만 삭제하려는 하나의 파일 만 찾습니다.
그런 다음 -delete 옵션을 전달하여 찾으십시오.
eric@dev ~ $ find . -name "*--yo yo*" -delete
eric@dev ~ $ ls
bin
Aaaannd 사라졌습니다.
답변
자정 사령관 ( mc
)이 가장 쉬운 방법입니다. 겨냥하고 F8을 누르십시오.)