내 문제는 다음과 같습니다.
이름에 -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