在单行命令中将多个文件复制并重命名到隐藏文件夹

在单行命令中将多个文件复制并重命名到隐藏文件夹

因此,我尝试将所有 .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

相关内容