如何在文件夹和子文件夹中运行命令

问题描述

我有一个包含多个级别的大型文件夹结构(在命名约定中没有模式)。如何运行以下命令从所有文件夹中提取数据?命令是:

perl -wne'while(/[\w\.\-]+@[\w\.\-]+\w+/g){print "$&\n"}'inputfile.txt > outputfile.txt 

它适用于一个输入文件,但希望它遍历文件夹和子文件夹中的所有文本文件。

解决方法

我会使用 find 调用带有“-i”选项的 Perl 进行就地编辑。使用“-i”选项,您可以选择为保存的未修改文件指定扩展名;没有它,它会在不保存未修改文件的情况下就地修改文件。

find dirs -name \*.txt -exec perl -i.orig -wne 'while(/[\w\.\-]+@[\w\.\-]+\w+/g){print "$&\n"}' {} \;

或(较少启动 Perl)使用:

find dirs -name \*.txt -print | xargs perl -i.orig -wne 'while(/[\w\.\-]+@[\w\.\-]+\w+/g){print "$&\n"}'

或者,您可以使用 File::Find 模块遍历目录树,然后进行自己的就地编辑,但我认为如果您在 UNIX/ Linux。 (如果在 Windows 上,您可能必须这样做。)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...