Linux
如何使用find替換多個同名文件
我有幾個同名文件(比如 somefile.php)分散在 /var/ 下的幾個目錄中
如果我想用位於 /home/me/somefile.php 的新版本 somefile.php 替換所有這些文件……我該怎麼做?我找到的每個搜尋結果都與替換文件中的文本有關,但我想替換整個文件。
我知道我可以找到所有文件:
find /var/ -type f -name somefile.php
但我不確定如何將 /home/me/somefile.php 移動到結果中並全部替換。
查找 /var -type -f -name somefile.php -exec cp /home/me/somefile.php {} ;
當心!
如您所見,這也適用於帶有空格的文件:
hoeha@dw:/tmp/test$ mkdir my\ dir{1,2,3}/ ; touch my\ dir{1,2,3}/file\ to\ replace hoeha@dw:/tmp/test$ tree . ├── my dir1 │ └── file to replace ├── my dir2 │ └── file to replace └── my dir3 └── file to replace 3 directories, 3 files hoeha@dw:/tmp/test$ echo "the new one" > the\ new\ one hoeha@dw:/tmp/test$ find . -type f -name 'file to replace' -exec cp the\ new\ one \{\} \; -execdir mv \{\} the\ new\ one \; hoeha@dw:/tmp/test$ tree . ├── my dir1 │ └── the new one ├── my dir2 │ └── the new one ├── my dir3 │ └── the new one └── the new one 3 directories, 4 files hoeha@dw:/tmp/test$ cat my\ dir1/the\ new\ one the new one hoeha@dw:/tmp/test$ find -version | head -1 find (GNU findutils) 4.4.2 hoeha@dw:/tmp/test$
這是你想要的嗎?