[英]Find and replace text in files with xonsh
如何在 xonsh shell 中替換給定目錄中所有文件中的文本(遞歸)?
例如,我將如何重寫下面的 bash 命令:
find . -type f -name "*baz*" -exec sed -i 's/foo/bar/g' {} +
我可以試試這個:
for fpath in pg`*baz*`:
if not fpath.is_file():
continue
fpath.write_text(fpath.read_text().replace('foo', 'bar'))
只需添加引號告訴 xonsh {}
和+
是 arguments:
find . -type f -name "*baz*" -exec sed -i 's/foo/bar/g' '{}' '+'
在 xonsh 中測試命令的完整示例:
echo 'foo foo' > some_baz_file
find . -type f -name "*baz*" -exec sed -i 's/foo/bar/g' '{}' '+'
cat some_baz_file
# bar bar
另一種方法是使用 xonsh宏命令並按原樣運行 bash 行:
bash -c! find . -type f -name "*baz*" -exec sed -i 's/foo/bar/g' {} +
為了簡化這種方法,有一個xontrib-sh擴展,它只允許添加!
在命令前簽名:
! find . -type f -name "*baz*" -exec sed -i 's/foo/bar/g' {} +
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.