유닉스 : 대시로 시작하는 파일,- 싶습니다. 내 특별한 경우에 나는

좋아, 대시로 시작하는 많은 파일이 있습니다-. 어느 것이 좋지 않은데 … 이름을 바꾸고 싶습니다. 내 특별한 경우에 나는 그들 앞에 캐릭터를 넣고 싶습니다.

작동 해야하는 다음 줄을 찾았지만 대시로 인해 작동하지 않습니다.

for file in -N*.ext; do mv $file x$file; done

내가 넣을 경우 echo의 앞에 mv나는 한 무리를 얻을 수

mv -N1.ext x-f1.ext
mv -N2.ext x-f2.ext

물론 첫 번째 파일 이름은 옵션이라고 생각할 것입니다. 그래서 내가 제거 echo하고 실행할 때 나는 단지 많은 무리를 얻습니다.

mv: illegal option -- N

나는 그것을 바꾸려고 노력했다.

for file in -N*.ext; do mv "$file" "x$file"; done

그러나 따옴표는 무시되는 것 같습니다. 작은 따옴표를 사용하려고했지만 변수가 확장되지 않았습니다 … 여기서 어떻게해야합니까?

업데이트 : 이제 인용문을 인용하려고했습니다. 이처럼 :

for file in -N*.ext; do mv '"'$file'"' '"'x$file'"'; done

그리고 그것을 반향 할 때, 그것은 정확 해 보이지만, 실제로 그것을 실행할 때 나는 단지

mv: rename "-N1.ext" to "x-n1.ext":: No such file or directory

나는 지금 이것을하는 방법에 대한 단서가 없다 … 한숨



답변

당신은 키워드를 사용할 필요가 --알려 MV의 인수가 옵션으로 해석되지 않도록 명령을 사용합니다. 손목 시계:

$ mv -N1.ext x-f1.ext
mv: invalid option -- N
Try `mv --help' for more information.

$ mv -- -N1.ext x-f1.ext
$ ls
x-f1.ext

명령 행에서 모든 옵션 -- 뒤에 사용하십시오 . 당신이 사용하려는 경우 예를 들면, -i에 옵션 MV를 , 그것은 갈 것 전에 -- :

mv -i -- -filename-begins-with-dash newfilename

답변

다른 기술은 파일 이름을 가진 상위 디렉토리를 포함시키는 것입니다 …

‘-file-to-rename’파일의 이름을 ‘file-to-rename’으로 바꾸려면 …

mv  ../parent-dir/-file-to-rename  file-to-rename

@Skippy le Grand Gourou에게 감사합니다. ./-file-to-rename 이 …에서 mvrm같이 작동하는지 확인 했습니다 …

mv  ./-file-to-rename  ./--file-to-rename

rm  ./-file-to-rename