将壁纸图像复制到单个文件夹中

将壁纸图像复制到单个文件夹中

在我的 ubuntu 12.04 设置中,目录中有很多壁纸图像/usr/share/wallpapers。例如,一个可能是

usr/share/wallpapers/Leafs_Labyrinth/contents/images/1600x1200.jpg

我想要做的是遍历壁纸目录,挑选所有大小为1600x...或 的图像1680x...并将它们复制到另一个文件夹,但重命名,以便上面的图像最终被称为Leafs_Labyrinth1600x1200.jpg.

我不能find在这里单独使用;我希望我需要使用某种 shell 脚本,但我对此经验很少。有没有一种简单的“自然”方法可以做到这一点?

答案1

这应该根据您问题的详细信息起作用。您可以将以下内容保存在文件中,更改我的目录到目标文件夹的名称,然后运行bash name_of_script

#!/bin/bash

# * matches any string | [08] matches 0 and 8
for image in /usr/share/wallpapers/*/contents/images/16[08]0x*.jpg; do
    # create variables by cutting $image in pieces separated by /
    name=$(awk -F/ '{print $5}' <<<$image)
    file=$(awk -F/ '{print $8}' <<<$image)

    # copy to "mydirectory"
    cp "$image" mydirectory/"$name""$file"
done

同样可以这样简化:

for image in /usr/share/wallpapers/*/contents/images/16[08]0x*.jpg; do
    cp "$image" mydirectory/"$(awk -F/ '{print $5 $8}' <<<$image)"
done

相关内容