한 줄 명령으로 여러 파일을 숨겨진 폴더에 복사하고 이름을 바꿉니다.

한 줄 명령으로 여러 파일을 숨겨진 폴더에 복사하고 이름을 바꿉니다.

그래서 모든 .png 파일을 아이콘 디렉토리에 복사하고 이름을 바꾸려고 했습니다.

$ cp /opt/pt/art/{pka.png,pkt.png,pkz.png} ~/.local/icons/{application-x-pka.png,application-x-pkt.png,application-x-pkz.png}

하지만 다음과 같은 출력 오류가 발생합니다.

cp: target '/home/carl/.local/share/icons/application-x-pkz.png/..' is not a directory

어떻게 해야 합니까?

답변1

cp 명령은 여러 대상을 허용하지 않습니다.

$ for a in pka pkt pkz; do
    cp /opt/pt/art/${a}.png ~/.local/icons/application-x-${a}.png
done

답변2

홈 디렉터리에서 png, 확장자가 포함된 모든 파일을 찾아 복사하려면 ~/backup(폴더는 단지 예일 뿐임) 다음을 시도해 보세요.

cd
find . -regex '.*\(png\)' \! -path './backup/*' -exec echo cp -t backup {} +

그리고 이름을 바꾸세요

a=1
for i in *.png; do
  new=$(printf "%04d.png" "$a") #04 pad to length of 4
  mv -i -- "$i" "$new"
  let a=a+1
done

관련 정보