하이픈으로 시작하는 파일 이름을 바꿀 수 없습니다


37

파일 이름의 시작 부분에 하이픈으로 파일 이름을 바꾸려고합니다.

mv -example-file-name example-file-name

이:

mv '-example-file-name' example-file-name

의 결과:

mv: invalid option -- 'e'

1
파일의 상대 경로 (./tmp/-example), 전체 경로 (/ home / a / tmp / -example)를 사용하거나 mv에 옵션을 제공 한 것으로-와 뒤에 오는 것은 파일이라는 것을 알리십시오. 이름.
Ярослав Рахматуллин

누군가 궁금해하는 경우 : mv *example-file-name example-file-name전에 파일 이름 확장 (AKA globbing)이 발생하기 때문에 동일한 문제 mv가 있습니다.
Walter Tross

답변:


53

대부분의 GNU / Linux 명령은 --옵션의 끝을 나타내는 옵션을 허용 하므로 후속 -접두사가 붙은 단어는 옵션으로 취급되지 않습니다.

  mv -- -example-file-name example-file-name

작은 시험

$ touch -- -example
$ ls -l -- *ample
-rw-r--r-- 1 rgb rgb 0 Nov 25 09:57 -example
$ mv -- -example example
$

이것도 같은 문제를 해결합니다 rename. (적어도 어느 버전 rename [options] <expression> <replacement> <file>...이든, 어느 쪽이든 작동합니다 .)
underscore_d 8

젠장, BSD / Mac OS X mv는 이것을 가지고 있지 않습니다 :(
Sridhar Sarnobat

18

RedGrittyBrick의 답변은 매우 좋습니다. 다른 옵션은 다음과 같습니다.

mv ./-example-file-name example-file-name

작은 테스트 :

$ touch ./-example
$ ls -l ./*ample
-rw-r--r-- 1 me me 0 Nov 25 16:02 ./-example
$ mv ./-example example
$ ls -l ./*ample
-rw-r--r-- 1 me me 0 Nov 25 16:02 ./example

아주 좋은 해결 방법, 이것은 나에게 결코 발생하지 않았습니다. 그리고 허용 대답과는 달리,이 BSD / 맥 OS X에서 작동합니다
스리 Sarnobat에게

그것보다 조금 더 재미 --있습니다.
Corni

-1

이것을 사용할 수 있습니다 :

rename -- "s/\-//g" *

파일 이름이 다음과 같으면 모든 파일의 이름을 바꿀 수 있습니다 :)

-ng--sh-ay-01[------------]-FLV

코드를 실행 한 후 파일 이름은 다음과 같습니다.

ngshay01[]FLV

1
다른 접근 방식 (RedGrittyBrick 및 gniourf_gniourf의 접근 방법)은 다른 여러 명령에서 작동 할 가능성이 높습니다.
TOOGAM

-1

이 속임수는 절망의 시대에 저에게 효과적입니다. YMMV

rename \- '' *

이름을 인식하려면 하이픈을 이스케이프해야합니다. 이름 바꾸기가 작은 따옴표를 존중하지 않거나 어떤 종류의 재정의를 제공하지 않는 이유는 무엇입니까?

이것은 이름 바꾸기를 사용하여 선행 하이픈을 안정적으로 처리하는 유일한 방법입니다. mv 사용에 대한 다른 게시물에 동의하지만 어떤 이유로 mv를 사용할 수없는 경우이 작동합니다.

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