① 用C语言实现linux下文件模糊查找,比如在home下,找出所有的JPEG文件
朋友,我来告诉你答案!sudofind/home-name'.jpeg'home目录需要root权限
② linux命令行怎么查看指定文件在哪
在使用linux时,经常需要进行文件查找。其中查找的命令主要有find和grep。两个命令是有区的。区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。
(2)grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。
一.find命令
基本格式:find path expression
1.按照文件名查找
(1)find / -name httpd.conf#在根目录下查找文件httpd.conf,表示在整个硬盘查找
(2)find /etc -name httpd.conf#在/etc目录下文件httpd.conf
(3)find /etc -name '*srm*'#使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件
(4)find . -name 'srm*' #表示当前目录下查找文件名开头是字符串‘srm’的文件
2.按照文件特征查找
(1)find / -amin -10 # 查找在系统中最后10分钟访问的文件(access time)
(2)find / -atime -2 # 查找在系统中最后48小时访问的文件
(3)find / -empty # 查找在系统中为空的文件或者文件夹
(4)find / -group cat # 查找在系统中属于 group为cat的文件
(5)find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件(modify time)
(6)find / -mtime -1 #查找在系统中最后24小时里修改过的文件
(7)find / -user fred #查找在系统中属于fred这个用户的文件
(8)find / -size +10000c#查找出大于10000000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)
(9)find / -size -1000k #查找出小于1000KB的文件
3.使用混合查找方式查找文件
参数有: !,-and(-a),-or(-o)。
(1)find /tmp -size +10000c -and -mtime +2 #在/tmp目录下查找大于10000字节并在最后2分钟内修改的文件
(2)find / -user fred -or -user george #在/目录下查找用户是fred或者george的文件文件
(3)find /tmp ! -user panda#在/tmp目录中查找所有不属于panda用户的文件
二、grep命令
基本格式:find expression
1.主要参数
[options]主要参数:
-c:只输出匹配行的计数。
-i:不区分大小写
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达 式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
.:所有的单个字符。
* :有字符,长度可以为0。
③ linux源代码找到了函数定义的头文件那么相应的。c文件去哪里找
头文件并不一定要与.c文件一一对应。一个头文件里的不同函数可以在不同.c文件中定义。
编译器不是直接从.c文件中找的。编译器先将.c文件编译成.o文件,然后当某个.o文件中调用了某个函数而它自身又没有这个函数时,它就会先把这个没有出现的函数记下来,然后到后面链接的.o文件或者.a或者.so文件中找。如果仍然没有找到,编译器就会提示链接错误。
④ linux怎么用命令寻找文件夹
可以用find命令
基本用法:
find / -name 文件名 如:find ver1.d ver2.d -name '*.c' -print 查找ver1.d,ver2.d *.c文件并打印
2. 无错误查找:
find / -name access_log 2 >/dev/null
3. 按尺寸查找:
find / -size 1500c (查找1,500字节大小的文件,c表示字节)
find / -size +1500c (查找大于1,500字节大小的文件,+表示大于)
find / -size +1500c (查找小于1,500字节大小的文件,-表示小于)
4. 按时间:
find / -amin n 最后n分钟
find / -atime n 最后n天
find / -cmin n 最后n分钟改变状态
find / -ctime n 最后n天改变状态
5. 其它:
find / -empty 空白文件、空白文件夹、没有子目录的文件夹
find / -false 查找系统中总是错误的文件
find / -fstype type 找存在于指定文件系统的文件,如type为ext2
find / -gid n 组id为n的文件
find / -group gname 组名为gname的文件
find / -depth n 在某层指定目录中优先查找文件内容
find / -maxdepth levels 在某个层次目录中按递减方式查找
6. 逻辑
-and 条件与 -or 条件或
7. 查找字符串
find . -name '*.html' -exec grep 'mailto:'{}
⑤ linux find命令怎么用
你可以在超级用户状态 # 下,使用 find 命令查找指定的文件,举例如下:
#find / -name "*.c" -print <cr>
其中:/ 代表从根目录开始进行查找;"*.c" 代表要进行查找的文件类型为 C 语言源程序(*.c),-print 选项代表将查找到的结果输出到屏幕上。
该命令是最、最、最实用的文件查找命令,别的就可以举一反三了。例如:你如果想从 /usr 目录开始进行查找,那么就将 / 更改成:/usr 即可。
⑥ linux c 查看当前目录下是否有指定文件
1. Shell 版本
#获取当前脚本所在绝对路径
cur_dir=$(cd "$(dirname "$0")"; pwd)
2. C语言版本
方法一、用realpath函数。这种方法用于开机启动程序获取自身目录会出错
char current_absolute_path[MAX_SIZE];
//获取当前目录绝对路径
if (NULL == realpath("./", current_absolute_path))
{
printf("***Error***\n");
exit(-1);
}
strcat(current_absolute_path, "/");
printf("current absolute path:%s\n", current_absolute_path);
方法二、用getcwd函数。这种方法用于开机启动程序获取自身目录会出错
char current_absolute_path[MAX_SIZE];
//获取当前目录绝对路径
if (NULL == getcwd(current_absolute_path, MAX_SIZE))
{
printf("***Error***\n");
exit(-1);
}
printf("current absolute path:%s\n", current_absolute_path);
方法三、用readlink函数。这种方法最可靠,可用于开机启动程序获取自身目录
char current_absolute_path[MAX_SIZE];
//获取当前程序绝对路径
int cnt = readlink("/proc/self/exe", current_absolute_path, MAX_SIZE);
if (cnt < 0 || cnt >= MAX_SIZE)
{
printf("***Error***\n");
exit(-1);
}
//获取当前目录绝对路径,即去掉程序名
int i;
for (i = cnt; i >=0; --i)
{
if (current_absolute_path[i] == '/')
{
current_absolute_path[i+1] = '\0';
break;
}
}
printf("current absolute path:%s\n", current_absolute_path);
⑦ linux命令:浏览当前目录下的所有以“.c”为后缀名的文件是什么
Linux中浏览当前目录下所有以".c"为后缀名的文件,可以使用ls命令,直接执行如下命令:
ls*.c
⑧ LINUX下C语言实现文件名检索
首先
DIR
*opendir(const
char
*filename);
struct
dirent
*readdir(DIR
*dirp);
利用这两个函数获取你目录下
while(
(psDirent=readdir(pdir))
!=
NULL
)
{
//readdir返回的是目录下的名称,然后判断一下当前这个名字是子目录还是文件
struct
stat
st;
stat(
pcFileName,
&st
);
if(
S_ISDIR(st.st_mode)
)
continue;//是目录继续循环
else
filecount++;//是文件就加1
}
从循环出来后创建文件名为file(filecount+1)的文件。
这个只是简单思路。最后别忘closedir。因为你的需求里,并未涉及文件创建个数的上限以及如果删掉某个文件后的需求。
通常,如果你目录下文件个数固定似乎更好办一些。
⑨ Linux C语言 在文件中查找字符串匹配关键字
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FILE_NAME_MAX 50
#define SEPERATE_STRING_MAX 100
int StrCount(FILE *file,char *str);
int main()
{
char *filename,*spestr;
FILE *fp;
filename=(char *)malloc(FILE_NAME_MAX);
spestr=(char *)malloc(SEPERATE_STRING_MAX);
printf("Input the filename:");
while(1)
{
scanf("%s",filename);
fp=fopen(filename,"r");
if(fp!=NULL)
{
break;
}
printf("Can't open the file.Try Again!");
}
printf("Input the special string:");
scanf("%s",spestr);
printf("%d times of %s in %s.",StrCount(fp,spestr),spestr,filename);
fclose(fp);
free(filename);
free(filename);
return 0;
}
int StrCount(FILE *file,char *str)
{
int count=0;
char ch;
int p=0;;
while((ch=fgetc(file))!=EOF)
{
// 当前读入的字符匹配 str 相应位置的字符
if(ch == str[p])
{
// 匹配下一个字符
p++;
// 如果已经匹配成功
if(str[p] == '\0')
{
count++;
// 从头开始重新匹配
p = 0;
}
}
// // 当前读入的字符不匹配 str 相应位置的字符
else
{
⑩ linux下,C语言头文件在哪
一、 C标准库头文件,以及Linux的标准库文件的对应头文件,默认放在/usr/include下。 如图:
标识出了最常用的几个头文件。
二、 自定义头文件,或者集成头文件,需要在编译的时候指定。可以在命令行中指定,也可以在makefile中指定。
指定自定义头文件路径方式为:
-IPATH1 -IPATH2...
如当前目录下的inc文件夹,指定为头文件, 那么在编译a.c时,可以命令写作:
gcc a.c -I./inc -o a.out