42

我已经学习了如何使用 bash 脚本替换一行,但我想学习如何将整个文件替换为另一个文件夹中同名的另一个文件。这可能吗??

4

4 回答 4

67
cp -f [original file] [new file]

复制原始文件并覆盖目标文件(因此-f代表“强制”)。

于 2012-08-30T14:12:10.100 回答
40

如果您试图仅复制文件的内容,请尝试

cat /first/file/same_name > /second/file/same_name

这将用第一个文件的内容覆盖第二个文件的所有内容。但是,您的第二个文件的所有者、组和权限将保持不变。

于 2017-01-13T20:50:37.280 回答
8

使用这些命令:

mv file1 file2

如果 file2 不存在,则将 file1 重命名为 file2。如果 file2 存在,则将其内容替换为 file1 的内容。

mv -i file1 file2

然而,与上面类似,由于"-i"指定了 (interactive) 选项,如果 file2 存在,则会在用 file1 的内容覆盖之前提示用户。

mv file1 file2 file3 dir1

文件 file1、file2、file3 移动到目录 dir1。dir1 必须存在,否则mv将退出并出现错误。

mv dir1 dir2

如果 dir2 不存在,则将 dir1 重命名为 dir2。如果 dir2 存在,则在目录 dir2 中创建目录 dir1。

于 2012-08-30T14:14:05.760 回答
5

今天我需要相同的解决方案,唯一的改变是我需要用新版本替换许多用户目录中的旧版本 php 文件。我要去这里,只是将匹配与其他堆栈的答案混合并解决我的问题。我将@joseph 代码与 find 命令一起使用。

我在这里分享我的小代码,希望对某人有所帮助。

for file in $(find /home/*/ -type f -name 'timthumb.php');
do
    cat /home/timthumb.php > $file;
done
于 2018-11-22T10:37:33.700 回答