【发布时间】:2012-08-25 07:08:32
【问题描述】:
我已经学习了如何使用 bash 脚本替换一行,但我想学习如何用另一个文件夹中同名的另一个文件替换整个文件。这可能吗??
【问题讨论】:
标签: batch-file replace directory
我已经学习了如何使用 bash 脚本替换一行,但我想学习如何用另一个文件夹中同名的另一个文件替换整个文件。这可能吗??
【问题讨论】:
标签: batch-file replace directory
cp -f [oringinal file] [new file]
复制原始文件并覆盖目标文件(因此-f代表“强制”)。
【讨论】:
which cp 来检查cp 别名。
cp -f [new file] [original file]
如果您试图仅复制文件的内容,请尝试
cat /first/file/same_name > /second/file/same_name
这将用第一个文件的内容覆盖第二个文件的所有内容。但是,您的第二个文件的所有者、组和权限将保持不变。
【讨论】:
使用这些命令:
mv file1 file2
如果 file2 不存在,则将 file1 重命名为 file2。如果 file2 存在,则将其内容替换为 file1 的内容。
mv -i file1 file2
然而,与上面一样,由于指定了"-i"(交互式)选项,如果 file2 存在,则在用 file1 的内容覆盖之前提示用户。
mv file1 file2 file3 dir1
文件file1、file2、file3 被移动到目录dir1。 dir1 必须存在,否则mv 将退出并出现错误。
mv dir1 dir2
如果 dir2 不存在,则将 dir1 重命名为 dir2。如果 dir2 存在,则在目录 dir2 中创建目录 dir1。
【讨论】:
今天我需要相同的解决方案,唯一的改变是我需要用新版本替换许多用户目录中的旧版本 php 文件。我要去这里,只是将匹配与其他堆栈的答案混合并解决我的问题。我使用 @joseph 代码和 find 命令。
我在这里分享我的小代码,希望对某人有所帮助。
for file in $(find /home/*/ -type f -name 'timthumb.php');
do
cat /home/timthumb.php > $file;
done
【讨论】:
find -type f -iname myFile | while read fileName; do cp-f ../sourceFileLocation/myFile $fileName; done 它还将从 ../sourceFileLocation/myFile 获取文件并替换当前目录和子目录中的所有匹配项,但保证可以使用二进制文件。我个人也更喜欢| while read 而不是for $()。