파일 이름에 -r을 사용하여 파일을 mv하려고 할 때 오류가 발생했습니다.

파일 이름에 -r을 사용하여 파일을 mv하려고 할 때 오류가 발생했습니다.

내 문제는 다음과 같습니다.

이름에 -r이 포함된 파일이 있습니다.-r.jpg

내가 시도했을 때 mv *.jpg old/나는 다음을 얻습니다.

mv: invalid option -- 'r'

심지어

for g in *.jpg;do echo $g &&mv "${g}" old/;done

나는 같은 오류가 있습니다.

답변1

대부분의 명령줄 유틸리티에는옵션~에서인수.

이를 통해 여러 가지 문제를 예방할 수 있습니다."특별한"옵션처럼 보이는 파일 이름.

옵션의 끝을 나타내는 가장 일반적인 구분 기호는 두 개의 하이픈 --이거나 --에서도 지원됩니다 mv.

다시 말해서:

 mv [OPTIONS] -- SOURCE DEST

또는 옵션을 지정하지 않았기 때문에:

 mv -- *.jpg old/

답변2

./가장 간단한 해결책은 파일 이름 앞에 상대 경로를 설명하는 것입니다.

for g in *.jpg; do echo $g && mv "./${g}" old/; done

절대 경로를 사용하는 것도 가능합니다

for g in $(pwd)/*.jpg; do echo $g && mv $g old/; done

또는 이미 상대 경로를 제공하는 명령을 사용할 수도 있습니다 ( 현재 디렉터리만 처리하려는 경우 find사용할 수 있습니다 ).--max-depth

for g in $(find . -name "*jpg"); do mv $g old; done

그리고 구문 분석할 수 없는 복잡한 문자가 많은 최악의 경우에는 와 결합된 inode 번호를 참조하여 find -inum그에 따라 파일을 처리 할 수 있습니다.

 $ for g in $(ls -i1 ./*jpg | cut -f1 -d' '); do find . -inum $g -print0 | xargs -0 -I '{}' mv '{}' old; done

관련 정보