좋아, 대시로 시작하는 많은 파일이 있습니다-. 어느 것이 좋지 않은데 … 이름을 바꾸고 싶습니다. 내 특별한 경우에 나는 그들 앞에 캐릭터를 넣고 싶습니다.
작동 해야하는 다음 줄을 찾았지만 대시로 인해 작동하지 않습니다.
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 이 …에서 mv
와 rm
같이 작동하는지 확인 했습니다 …
mv ./-file-to-rename ./--file-to-rename
rm ./-file-to-rename