在我的 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