簡體   English   中英

使用 xonsh 查找和替換文件中的文本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM