当前位置: 首页 > 面试题库 >

在Mac和Linux上以递归方式搜索和替换文本文件

孔理
2023-03-14
问题内容

在linux shell中,以下命令将递归搜索并将“ this”的所有实例替换为“ that”(我前面没有Linux shell,但应该这样做)。

find . -name "*.txt" -print | xargs sed -i 's/this/that/g'

OSX上的类似命令会是什么样?


问题答案:

OS X混合使用BSD和GNU工具,因此最好始终检查文档(尽管我less什至不符合OS X手册页):

https://web.archive.org/web/20170808213955/https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/sed.1.html

sed将参数after -i作为备份的扩展名。提供空字符串(-i '')表示不进行备份。

应该执行以下操作:

LC_ALL=C find . -type f -name '*.txt' -exec sed -i '' s/this/that/ {} +

-type f只是个好习惯;如果给sed一个目录,sed会抱怨。 -exec优先于xargs;
您无需理会-print0或任何事情。将{} +在年底意味着find将所有结果作为参数添加的,而不是给被叫命令的一个实例,再运行它为每个结果。(一个例外是当操作系统允许的最大命令行参数数被破坏时;在这种情况下,find它将运行多个实例。)



 类似资料:
  • 问题内容: 如何使用Python 3搜索和替换文件中的文本? 这是我的代码: 输入文件: 当我在上面的输入文件中搜索并将“ ram”替换为“ abcd”时,它起了一种魅力。但是,反之亦然,即用“ ram”替换“ abcd”时,一些垃圾字符会保留在末尾。 用“ ram”代替“ abcd” 问题答案: fileinput已经支持就地编辑。stdout在这种情况下,它将重定向到文件:

  • 按下 / 键,编辑器底部会出现 / 符号,接着输入字符串,便可以进行搜索 / 向下搜索 ? 向上搜索 n 搜索下一个 N 搜索上一个 :s/源字符串/目标字符串 将源字符串替换为目标字符串 :s/源字符串/目标字符串/g 替换当前行中所有符合条件的字符串 :行号1,行号2s/源字符串/目标字符串/g 在指定行中进行替换 :%s/源字符串/目标字符串/g 全文替换

  • 问题内容: 我想递归搜索带有文本文件子目录的目录,并用多行字符串的内容替换文件中每次出现的{$ replace}。如何用python实现? [编辑] 到目前为止,我所拥有的只是使用os.walk的递归代码,以获取需要更改的文件列表。 问题答案: 签出os.walk: 上面的解决方案有缺陷,例如实际上会打开它找到的每个文件,或者实际上将每个文件都读到内存中(如果您有1GB的文本文件,那就不好了),但

  • 问题内容: 我正在尝试使用递归搜索返回指定目录中的文件。我成功实现了这一点,但是我想添加几行代码,这些代码使我可以指定要返回的某些扩展名。 例如,仅返回目录中的.jpg文件。 这是我的代码, 请让我知道我可以在上述代码中添加些什么来实现此目标,谢谢 问题答案:

  • 问题内容: 诚然,对于SQL命令,我是一个菜鸟。黑客在我的一个WordPress网站上的每个帖子和页面的末尾插入了一个脚本标签,我试图在“ wp_posts”表中进行查找和替换,但是当我运行“模拟查询。这是我所拥有的: 无论我在第一组“查找”引号中添加了什么内容,即使是像“ hcifx”一样简单的东西,而不是所显示的整个脚本标签,我都会收到错误消息。有什么想法我要去哪里吗? 问题答案: 原来,该错

  • Sublime Text 提供两种主要搜索方式: 单文件搜索 多文件搜索 两种方式都支持正则表达式。 单文件搜索 搜索 键盘快捷键与搜索面板对应关系: 打开搜索面板 Ctrl + F 正则表达式 Alt + R 大小写匹配 Alt + C 精确匹配 Alt + W 下一个 Enter 上一个 Shift + Enter 所有 Alt + Enter 增量搜索 键盘快捷键与增量搜索面板对应关系: 打