Linux脚本-将当前文件夹下所有包含main函数的.c文件提取出来

实现一个Linux脚本,该脚本使用 for 循环遍历当前目录下的所有 .c 文件。
对于每个 .c 文件,使用 grep 命令来查找是否包含字符串 “main”。
如果该 .c 文件包含 “main”,则输出到/home/majn/llvm_project/extract_main目录下。

#!/bin/bash# 目标目录
TARGET_DIR="/home/majn/llvm_project/extract_main"# 创建目标目录,如果不存在的话
mkdir -p "$TARGET_DIR"# 遍历当前目录下的所有 .c 文件
for file in *.c; do# 使用 grep 命令查找是否包含字符串 "main"if grep -q "main" "$file"; then# 如果找到,将该 .c 文件复制到目标目录下cp "$file" "$TARGET_DIR/"echo "Copied $file to $TARGET_DIR"elseecho "$file does not contain 'main'"fi
done

这里做了以下几件事:

  1. 使用 mkdir -p 创建目标目录(如果不存在)。
  2. 使用 for 循环遍历当前目录下的所有 .c 文件。
  3. 使用 grep -q 查找每个文件中是否包含字符串 "main"
  4. 如果包含,使用 cp 命令将文件复制到目标目录。

保存这个脚本,给它可执行权限,然后运行它:

chmod +x your_script.sh
./your_script.sh

注意:请确保你有写入 /home/majn/llvm_project/extract_main 目录的权限,并且在运行脚本之前要小心,以确保不会覆盖重要文件。如果需要,先在一个测试目录中运行这个脚本。

上述脚本执行报错!!!

./main.sh 
-bash: ./main.sh: /bin/bash^M: bad interpreter: No such file or directory

这个错误通常是因为脚本文件中含有 Windows 风格的换行符(\r\n),而 Linux 期望的是 UNIX 风格的换行符(\n)。当你在 Windows 系统中创建或编辑文本文件并将其转移到 Linux 系统时,这种情况可能会发生。

你可以使用 dos2unix 工具来转换文件的换行符。首先,你需要安装 dos2unix

sudo apt update
sudo apt install dos2unix  # 在基于 Debian 的系统中

或者

yum install dos2unix  # 在基于 RedHat 的系统中

然后,你可以运行下面的命令来转换脚本文件:

dos2unix main.sh

这会把 main.sh 中的所有 Windows 风格的换行符转换为 UNIX 风格的换行符。

然后,你应该能够正常运行脚本:

chmod +x main.sh
./main.sh

如果你没有 dos2unix 工具,也可以使用 sed 来进行转换:

sed -i 's/\r$//' main.sh

这行 sed 命令会查找并移除文件中所有行尾的 \r 字符。之后,你应该能够正常执行该脚本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/61342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

01_lwip_raw_udp_test

1.打开UDP的调试功能 (1)设置宏定义 (2)打开UDP的调试功能 (3)修改内容,串口助手打印的日志信息自动换行 2.电脑端连接 UDP发送一帧数据 3.电路板上发送一帧数据

Qt自定义标题栏

一、创建项目 最终项目文件结构如下 “iconfont.tff”的使用方式见如下博客,用于更改图标颜色Qt更改图标颜色_怎么追摩羯座的博客-CSDN博客 二、MyTitleBar.pro #------------------------------------------------- # # Project created by QtCreator 2023-08-2…

如何为你的公司选择正确的AIGC解决方案?

如何为你的公司选择正确的AIGC解决方案? 摘要引言词汇解释(详细版本)详细介绍1. 确定需求2. 考虑技术能力3. 评估可行性4. 比较不同供应商 代码快及其注释注意事项知识总结 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客&…

Linux centos7 bash编程(break和continue)

在学习shell知识时,简单编程要从格式入手。 首先学习好单行注释和多行注释。 先学习简单整数的打印输出,主要学习echo命令,学习选项-e -n的使用。 下面的练习是常用的两个分支跳转程序:break和continue。 #!/bin/bash # 这是单…

贪心算法总结篇

文章转自代码随想录 贪心算法总结篇 我刚刚开始讲解贪心系列的时候就说了,贪心系列并不打算严格的从简单到困难这么个顺序来讲解。 因为贪心的简单题可能往往过于简单甚至感觉不到贪心,如果我连续几天讲解简单的贪心,估计录友们一定会不耐…

matlab使用教程(29)—微分方程实例

此示例说明如何使用 MATLAB 构造几种不同类型的微分方程并求解。MATLAB 提供了多种数值算法来求解各种微分方程: 1.初始值问题 vanderpoldemo 是用于定义 van der Pol 方程的函数 type vanderpoldemo function dydt vanderpoldemo(t,y,Mu) %VANDERPOLDEMO Defin…

如何在不重新安装的情况下将操作系统迁移到新硬盘?

通常情况下,当你的硬盘损坏或文件过多时,电脑会变得缓慢且卡顿。这时,你可能会被建议更换为一块更好的新硬盘。 ​ 在比较HDD和SSD之后,许多用户更愿意选择SSD作为他们的新硬盘,因为SSD比HDD更稳定且运行更安…

双核和双路服务器的区别

服务器术语里,大家经常会听到1U、2U,单路、双路,机架式、塔式及刀片式等常用名词。其中,机架式、塔式及刀片式是 指服务器的外形,U是指服务器的高度,路是指服务器的处理器数量。 部分朋友会问,我…

Android 设置app深色、浅色、跟随系统

Android深色模式适配 我们需要再用户设置时候,记录下来,用户的设置,等app再次启动时候,获取之前设置,重新设置 public static void setThemeMode() {int themeModeType SpUtils.getThemeModeType();if (themeModeTyp…

环境安装:rpm安装jdk上线项目

Tomcat安装 解析域名 购买域名并配置 安装Docker yum 卸载以前装过的docker

Seaborn数据可视化(四)

目录 1.绘制箱线图 2.绘制小提琴图 3.绘制多面板图 4.绘制等高线图 5.绘制热力图 1.绘制箱线图 import seaborn as sns import matplotlib.pyplot as plt # 加载示例数据(例如,使用seaborn自带的数据集) tips sns.load_dataset("t…

算法通关村第十七关——柠檬水找零

贪心,顾名思义,就是挑价值最大的 如果直接挑价值最大的,这样不一定能够达到最优解,因为最终价值多少还要取决于背包容量。 贪心算法解决0-1背包问题的基本思路是:按照物品的单位价值(即价值与重量的比值&…

上海市青少年算法2023年7月月赛(丙组)

T1先行后列 题目描述 从 1 开始的 nm 个整数按照先行后列的规律排列如下: 给定 n 与 m,再给定一个数字 c,请输出 c 所在的行数与列数。 输入格式 第一行:两个整数表示 n 与 m 第二行:一个整数表示 c 输出格式 两个整数:表示 c 所在的行数与列数。 数据范围 1≤n,m≤10000…

[SpringBoot3]远程访问@HttpExchange

六、远程访问HttpExchange[SpringBoot3] 远程访问是开发的常用技术,一个应用能够访问其他应用的功能。SpringBoot提供了多种远程访问的技术。基于HTTP协议的远程访问是最广泛的。SpringBoot中定义接口提供HTTP服务。生成的代理对象实现此接口,代理对象实…

MIMIC-IV数据提取教程

一、获取MIMIC-IV数据库 MIMIC-IV数据库需要申请权限,具体怎么申请我之前的博客发的有:MIMIC数据库申请流程 以最新的MIMIC-IV 2.2版本为例,首先打开页面拖动到最底端:https://physionet.org/content/mimiciv/2.2/ 直接下载解压下来&#x…

linux下安装Mycat

1 官网下载mycat 官方网站: 上海云业网络科技有限公司http://www.mycat.org.cn/ github地址: MyCATApache GitHubMyCATApache has 34 repositories available. Follow their code on GitHub.https://github.com/MyCATApache 2 Mycat安装 1 把MyCat…

菜鸟教程《Python 3 教程》笔记(13):迭代器与生成器

菜鸟教程《Python 3 教程》笔记(13) 13 迭代器与生成器13.1 迭代器13.1.1 创建一个迭代器13.1.2 StopIteration 13.2 生成器13.3 yield 使用浅析13.3.1 通过 iterable 对象来迭代13.3.2 使用 isgeneratorfunction 判断13.3.3 类的定义和类的实例13.3.4 r…

基于材料生成算法优化的BP神经网络(预测应用) - 附代码

基于材料生成算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于材料生成算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.材料生成优化BP神经网络2.1 BP神经网络参数设置2.2 材料生成算法应用 4.测试结果:5…

时序预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU时间序列预测

时序预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU时间序列预测 目录 时序预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU时间序列预测效果一览基本描述程序设计参考资料 效果一览 基本描述 1.时序预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU时间序列预测&a…

C++--完全背包问题

1.【模板】完全背包_牛客题霸_牛客网 你有一个背包,最多能容纳的体积是V。 现在有n种物品,每种物品有任意多个,第i种物品的体积为vivi​ ,价值为wiwi​。 (1)求这个背包至多能装多大价值的物品? &#xff0…