用于复制文件并粘贴目录及其子目录中匹配的脚本

用于复制文件并粘贴目录及其子目录中匹配的脚本

我有 2 个目录

  1. 修改的
  2. 更新

修改后的目录包含:

loc.jpg
home.txt
first.p

更新后的目录包含:

./updated/hyd/reg/loc.jpg
./updated/hyd/loc/home.txt
./updated/hyd/programs/first.p

如何将修改后的文件复制到更新目录中的匹配文件中

例子:

loc.jpg应该匹配updated/hyd/reg/loc.jpg并替换它

答案1

您可以for循环遍历modified目录中的每个文件,find对每个元素执行操作并cp确定是否找到文件:

一句话:

for file in *; do find /path/to/updated -name "$file" -exec cp "$file" {} \; ; done

脚本:

for file in *
do
    find /path/to/updated -name "$file" -exec cp "$file" {} \;
done

解释:

  • for file in *将循环遍历当前目录下的每个文件,更改$file为当前文件名
  • find /path/to/updated -name $fileupdated将在您的目录中搜索给定的文件名
  • -exec cp $file {} \;将使用cp( )$file的输出作为参数执行find{}

例子:

╭─user@machine ~/test 
╰─$ cat updated/asdf 
╭─user@machine ~/test 
╰─$ cat asdf        
somecontent
╭─user@machine ~/test 
╰─$ for file in *; do find updated -name $file -exec cp $file {} \; ; done       

╭─user@machine ~/test 
╰─$ cat asdf
somecontent
╭─user@machine ~/test 
╰─$ cat updated/asdf 
somecontent

相关内容