我有 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 $file
updated
将在您的目录中搜索给定的文件名-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