![Bash Shell 脚本-如何遍历目录以及复制和重命名文件?](https://linux22.com/image/1239241/Bash%20Shell%20%E8%84%9A%E6%9C%AC-%E5%A6%82%E4%BD%95%E9%81%8D%E5%8E%86%E7%9B%AE%E5%BD%95%E4%BB%A5%E5%8F%8A%E5%A4%8D%E5%88%B6%E5%92%8C%E9%87%8D%E5%91%BD%E5%90%8D%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我有一个目录设置如下:
/hosted/partner1/logo.png
/hosted/partner2/logo.png
/hosted/partner3/logo.png
/hosted/partner4/logo.png
/hosted/partner5/logo.png
..etc.
我想编写一个脚本,可以将这些文件复制到不同的位置,并使用不同的文件名,如下所示:
/partners/partner1.png
/partners/partner2.png
/partners/partner3.png
..etc.
有什么想法吗?我不太擅长编写 shell 脚本,而且我需要将很多文件迁移到单个目录中...
答案1
find /hosted -maxdepth 1 -name "partner*" -type d | while read -r dir
do
cp "${dir}/logo.png" "/partners/$(basename ${dir}).png"
done
或者
find /hosted -maxdepth 1 -name "partner*" -type d | while read -r dir
do
cp "${dir}/logo.png" "/partners/${dir##*/}.png"
done