hd.*_*hd. 224 linux command-line replace sed
我运行此命令在我的站点的根目录中的所有文件中查找并替换所有出现的'apple'和'orange':
find ./ -exec sed -i 's/apple/orange/g' {} \;
Run Code Online (Sandbox Code Playgroud)
但它不会通过子目录.
这个命令有什么问题?
编辑:这是find ./命令的一些输出行:
./index.php
./header.php
./fpd
./fpd/font
./fpd/font/desktop.ini
./fpd/font/courier.php
./fpd/font/symbol.php
Run Code Online (Sandbox Code Playgroud)
jfg*_*956 392
您的查找应该是这样的,以避免将目录名称发送到sed:
find ./ -type f -exec sed -i -e 's/apple/orange/g' {} \;
Run Code Online (Sandbox Code Playgroud)
Jul*_*ius 78
对于较大的s&r任务,使用grep和xargs会更好更快,例如;
grep -rl 'apples' /dir_to_search_under | xargs sed -i 's/apples/oranges/g'
Run Code Online (Sandbox Code Playgroud)
pat*_*t-s 14
由于也有 macOS 人员阅读了这篇文章(就像我一样),因此以下代码对我有用(在 10.14 上)
egrep -rl '<pattern>' <dir> | xargs -I@ sed -i '' 's/<arg1>/<arg2>/g' @
Run Code Online (Sandbox Code Playgroud)
所有其他答案都使用-i和-e不适用于 macOS。
小智 5
这对我有用:
find ./ -type f -exec sed -i '' 's#NEEDLE#REPLACEMENT#' *.php {} \;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
216562 次 |
| 最近记录: |