백업 스크립트는 확장자별로 파일을 복사합니다.

백업 스크립트는 확장자별로 파일을 복사합니다.

.png한 디렉터리에서 다른 디렉터리로 파일을 복사하는 스크립트를 만들었습니다 . 스크립트는 다음과 같습니다.

i="`cat /usr/local/app1/default.conf | grep -i values | sed -e 's/\values=//g' -e 's/,/ /g'`"
for data in $i
do
cp -rvp /usr/local/dir1/$data.png /home/user1/dir1
done

위 스크립트를 실행하면 파일이 에서 dir1로 복사되지만 /home/user/dir1마지막에 다음과 같은 오류가 발생합니다.

cp: cannot stat ‘/usr/local/dir1/wasw\r.png’: No such file or directory

내용은 다음과 같습니다 default.conf.

 values= wads sead seda okaw wasw

명령은 cp"wads", "sead" 등의 값을 검색하지만 결국 위의 오류가 발생합니다.

답변1

현재 가지고 있는 것과 동일한 코드를 유지하려면 다음 sed과 같은 코드를 더 사용하는 것이 좋습니다.

i="`sed -n 's/'$'\r''//;s/,/ /g;s/values=//gp' /usr/local/app1/default.conf`"
for data in $i; do
    cp -rvp /usr/local/dir1/$data.png /home/user1/dir1
done

작동 방식:

  • -n플래그는 sed자동으로 줄을 인쇄하지 않도록 지시합니다.
  • s/$'\r'//명령문은 \r문제를 일으킬 수 있는 문자를 제거합니다.
  • p명령문 끝에 추가되는 것은 교체할 때만 버퍼를 인쇄합니다(라인에 존재하는 경우에만).s/values=//gpvalues=

답변2

실제로 나는 귀하의 사용 사례를 이해하지 못하지만 .png한 디렉터리에서 파일을 찾아 해당 파일을 다른 디렉터리에 복사하려고 한다는 것을 이해합니다. 귀하의 사용 사례에 대한 나의 이해가 정확하다면 다음 명령이 도움이 될 것입니다.

find /home/your/source/path/ -name \*.png -exec cp {} /home/your/destination/path/ \;

답변3

아마도 Windows 컴퓨터에서 default.conf 파일을 편집하여 복사했을 것입니다. 줄 끝의 개행 문자 앞에 추가 문자가 있는 것 같습니다. 노력하다 od -c default.conf. 다음과 같은 결과를 얻을 수 있습니다.

0000000   v   a   l   u   e   s   =       w   a   d   s       s   e   a
0000020   d       s   e   d   a       o   k   a   w       w   a   s   w
0000040 022  \n
0000042

파일을 편집하여 022문자(예: \r)를 제거하고 다시 시도하세요.

관련 정보