Shell-Script
替換文件夾中包含的文件中出現的所有術語
在我係統上的一個文件夾中,我有一個
C++
正在嘗試編譯的項目。這個過程使用了一些
C++
我的編譯器版本不支持的習語。特別是,經常在程式碼內部使用數據值'nullptr'
。我想要做的是將所有出現的替換
nullptr
為NULL
.我可以
VIM
使用以下命令執行此操作::%s/nullptr/NULL/g
如何在不打開每個文件並執行命令的情況下對目錄中的所有文件執行此操作?
有兩種方法可以做到這一點:
我來了
您可以從命令行使用 vim,如下所示:
$ vim -c "%s/nullptr/NULL/g|wq" foo.txt
包裹在一個 for 循環中:
$ for i in *; do vim -c "%s/nullptr/NULL/g|wq" -- "$i"; done
Perl
$ perl -p -i -e 's/nullptr/NULL/g' foo.txt
包裹在一個 for 循環中:
$ for i in *; do perl -p -i -e 's/nullptr/NULL/g' -- "$i"; done
或者簡單地說:
$ perl -p -i -e 's/nullptr/NULL/g' -- *
for file in /path/to/dir/*; do sed -i s/nullptr/NULL/g "$file" done
但是,這不會影響子目錄。
編輯 1
更快的解決方案(使用 GNU):
find /path/to/dir -type f -print0 | xargs -0 sed -i s/nullptr/NULL/g
這也會影響子目錄(和點文件)。
-maxdepth 1
如果不需要,請添加。