linux - 如何在 Linux 中以名称 Bouvet-Island.png 递归复制同一目录中的所有文件 Norway.png

标签 linux unix

我有一个带有标志的目录 (/flags),其中多个目录中有文件名 Norway.png。因为 Bouvet Island 旗帜不存在,挪威相当于那个国家(岛),我只需要将所有 Norway.png 文件复制到名称为 Bouvet-Island.png 的同一目录。

(这里是标志:https://downloads.gosquared.com/pixels/flags.zip)

考虑每个 Norway.png 位于不同的目录中并且具有不同的大小。

我尝试过这样的事情:

#!/bin/bash

echo "Renaming..."

# shell-expansion to loop specified files
for file in /var/www/images/flags/*/Norway.png; do

    cp "$file" "Bouvet-Island.png";
done;

但我收到以下消息:

cp: target ‘./flags/shiny/16/Norway.png’ is not a directory
cp: target ‘./flags/shiny/48/Norway.png’ is not a directory
cp: target ‘./flags/shiny/24/Norway.png’ is not a directory
cp: target ‘./flags/shiny/32/Norway.png’ is not a directory
cp: target ‘./flags/shiny/64/Norway.png’ is not a directory
cp: target ‘./flags/flat/16/Norway.png’ is not a directory
cp: target ‘./flags/flat/48/Norway.png’ is not a directory
cp: target ‘./flags/flat/24/Norway.png’ is not a directory
cp: target ‘./flags/flat/32/Norway.png’ is not a directory
cp: target ‘./flags/flat/64/Norway.png’ is not a directory

最佳答案

使用 find-exec 选项:

find /var/www/images/flags -name Norway.png \
    -exec sh -c 'cp {} $(dirname {})/Bouvet-Island.png' \;

关于linux - 如何在 Linux 中以名称 Bouvet-Island.png 递归复制同一目录中的所有文件 Norway.png,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24719239/

相关文章:

regex - 为什么使用星号通配符时命令 grep 不起作用 *

bash - 在shell中设置进程名称

c++ - 如何确定文件描述符是否已经关闭?

linux - 为什么在编写守护进程时需要关闭标准输入/输出/错误?

linux - 解释 linux 的权威网站或 pdf?

java - 在服务器上部署springboot项目报错

python - 使用python脚本在linux中设置环境路径

c - 为什么 stdout 在重定向到文件时需要显式刷新?

linux 磁盘利用率冲突

unix - 我如何区分网络上的两个文件