题目:把/oldboy目录及其子目录下所有以扩展名.sh结尾的文件中,文件包含oldboy的字符串全部替换为oldgirl
手续创建环境:
mkdir -p /oldboy/test
cd /oldboy
echo "oldboy">test/del.sh
echo "oldboy">test.sh
echo "oldboy">t.sh
touch oldboy.txt
touch alex.txt
接下来进行实际替换:
-
方法1:find -type f -name “*.sh” | xargs sed ‘s#oldboy#oldgril#g’ -i
sed 的 -i 参数代表修改文件 所以可以先sed看效果 然后加-i 参数实际修改
由于sed命令后面的参数接的是文件名 所以配合 xargs参数使用
- 方法二:$()或“
sed 's#oldboy#oldgril#g' `find -type f -name "*.sh"`
sed 's#oldboy#oldgril#g' $(find -type f -name "*.sh")
$() ===“ 这个命令是把里面的预计当做命令来执行
所以sed 后面要求的参数是文件名 正好是 find执行后的结果
-
方法三:find -type f -name “*.sh” -exec sed ‘s#oldboy#oldgirl#g’ {} \;
使用find 本身的参数 -exec 来执行命令 注意{} \; 的使用方式即可