导航:首页 > 操作系统 > linuxc获取文件名

linuxc获取文件名

发布时间:2022-05-09 21:03:16

linux find 怎样取得文件名呢

find ./ -name "*.m" -exec grep -l 'myCenter' {} \;
grep加入-l选项,就能将找到的文件名列出
linux中的find命令——查找文件名
1.在某目录下查找名为“elm.cc”的文件
find /home/lijiajia/ -name elm.cc

2.查找文件名中包含某字符(如"elm")的文件
find /home/lijiajia/ -name '*elm*'
find /home/lijiajia/ -name 'elm*'
find /home/lijiajia/ -name '*elm'

3.根据文件的特征进行查询
find /home/lijiajia/ -amin -10 #查找在系统中最后10分钟访问的文件
find /home/lijiajia/ -atime -2 #查找在系统中最后48小时访问的文件
find /home/lijiajia/ -empty #查找在系统中为空的文件或者文件夹
find /home/lijiajia/ -group cat # 查找在系统中属于groupcat 的文件(试了,命令不对。)
find /home/lijiajia/ -mmin -5 # 查找在系统中最后5 分钟里修改过的文件
find /home/lijiajia/ -mtime -1 #查找在系统中最后24 小时里修改过的文件
find /home/lijiajia/ -nouser #查找在系统中属于作废用户的文件(不明白是什么意思)
find /home/lijiajia/ -amin 10 #查找在系统中最后10分钟访问的文件
find /home/ftp/pub -user lijiajia #查找在系统中属于lijiajia这个用户的文件
(PS:以上都是在 /home/lijiajia/文件夹下进行的操作)

4.使用混合查找方式查找文件
find /tmp -size +10000000c -and -mtime +2 #查找/tmp目录中大于10000000字节并且在48小时内修改的某个文件
find /tmp -user tom -or -user george #查找/tmp目录中属于tom或者george这两个用户的文件
find /tmp ! -usr fred #查找/tmp目录中不属于fred的文件

5.查找并显示文件
find /home/lijiajia/ -name 'elm.cc' -ls #在目录下查找名为“elm.cc”的文件,并显示这些文件的信息

⑵ C语言文件读取问题 linux

刚按你的需求写了个小程序,看看这个能满足你的要求不,
遍历一个目录,查找不是隐藏的文件,然后输出出来,
至于你要干什么嘛,名都给你遍历出来,估计你自己就会做了吧.
这个遍历不是深度的,只遍历你输入的目录的当前目录.
编译的话,带gcc的环境,把这个随便起个名
gcc
xxx.c
就行了..
运行时要加个参数
比如,生成的可执行程序是a.out
./a.out
/root/--->加的参数就是你要遍历的路径.
#include
<sys/types.h>
#include
<sys/stat.h>
#include
<time.h>
#include
<stdio.h>
#include
<stdlib.h>
#include
<dirent.h>
int
main(int
argc,char
**argv)
{
struct
stat
s;
struct
stat
ss;
DIR
*dir
=
NULL;
struct
dirent
*dt
=
NULL;
if
(argc
!=
2)
{
printf("./xxx
dirpath
to
run
this
proc\n");
return
1;
}
if(lstat(argv[1],&s)
<
0)
{
printf("lstat
error\n");
return
1;
}
if(S_ISDIR(s.st_mode))
{//确定path是dir
dir
=
opendir(argv[1]);
if
(dir
==
NULL)
{
printf("open
dir
error\n");
return
1;
}
if
(chdir(argv[1])
<
0)
{//进入目录
printf("chdir
error\n");
return
1;
}
while((dt
=
readdir(dir))
!=
NULL)
{
if(dt->d_name[0]
==
'.')
{//隐藏文件或./..目录不进行查找
continue;
}
if(lstat(dt->d_name,
&ss)
<
0)
{
continue;
}
if
(S_ISREG(ss.st_mode))
{//打印普通文件
printf("file:%s\n",dt->d_name);
}
}
}
return
0;
}

⑶ 用c语言编写一个linux程序:通过find一个文件名,系统给一个路径,然后用c语言展开这个路径

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

intmain(intargc,char*argv[])
{
charfile_name[64]={0};
charfile_path[128]={0};
chardir_path[64]={0};
charcmd[256]={0};
intre=0;
FILE*pf=NULL;
char*p=NULL;

printf("请输入文件名: ");
scanf("%s",file_name);

snprintf(cmd,256,"find-name%s>tmp.txt",file_name);//如果文件不在程序运行的本地目录(或者子目录)下,则需要改成find/-namexxxx但耗时会很长
system(cmd);

//文件中取绝对路径
pf=fopen("tmp.txt","r");
if(pf)
{
re=fscanf(pf,"%s",file_path);//只取第一行也就是默认不存在同名文件
if(-1==re)
{
printf("err0 ");
return0;
}
else
{
flcose(pf);
pf=NULL;
}
}
else
{
printf("err1 ");
return0;
}

if(0==strlen(file_path))
{
printf("err2 ");
return0;
}

//获取目录名
p=strstr(file_path,file_name);
if(p)
{
*p='';
strcpy(dir_path,file_path);//也可以不cp直接用file_path
}

//通过c语言展开ls这个路径c语言变量其实我没有理解这句话...先这么做吧
snprintf(cmd,256,"ls%s",dir_path);
system(cmd);

return0;
}

如果哪里有异常就加printf打印出来各个变量

⑷ 如何在linux下编写c程序,读取并显示某个文件的前三行,格式为hrad3文件名

在程序当中编写这个前三行的话,格式一定要按文件来命名的文件名,命名的文件还是比较好用的。

⑸ 我要用c编写程序读写磁盘,在linux中磁盘为文件,怎样用c语言获取磁盘的文件描述符,然后对磁盘进行读写

linux下面的概念是一切皆文件。所以没有像c盘d盘这样的东西,有的只是各种各样的文件夹和文件。要读一个linux下面的文件很简单,命令pwd可以得到当前路径,然后路径接上你打开的文件名就可以知道这个文件的详细路径了。直接open就可以了。

⑹ 如何在linux系统中用C语言编程实现以非递归的方式查询指定目录下所有子目录的全部文件并保存文件名

把迭代得到的非文件文件夹项,即子目录保存到一个stack中。
随后逐个弹出栈顶元素并迭代之,就实现了以非递归方式遍历文件夹。

⑺ Linux系统中获取路径的文件名的方法

这篇文章主要介绍了Linux系统中获取路径的文件名的方法,文中总结出了两条,需要的朋友可以参考下
代码如下:
[[email protected]
]#basename
/root/aaa/bbb/dabu.txt
显示:
代码如下:
dabu.txt
#获取路径的文件名
shell脚本中如何获得脚本文件所在路径?
方法一:
代码如下:
[[email protected]
]#DIR=$(cd
"$(dirname
"$0")";
pwd)
[[email protected]
]#echo
$DIR
但是像这种dirname
"$0"这种写法,在遇到source命令时会得到错误的结果。
方法二:
代码如下:
[[email protected]
]#echo
"$(
cd
"$(
dirname
"${BASH_SOURCE[0]}"
)"
&&
pwd
)"
上面一行命令可以获得脚本的绝对轮径,无论你在何处调用这个脚本。
但是如果含有软链接,就无法使用了。所以,我们为了能正确解析指向脚本的软链接,可以使用下面的多行命令:
代码如下:
SOURCE="${BASH_SOURCE[0]}"
while
[
-h
"$SOURCE"
];
do
#
resolve
$SOURCE
until
the
file
is
no
longer
a
symlink
DIR="$(
cd
-P
"$(
dirname
"$SOURCE"
)"
&&
pwd
)"
SOURCE="$(readlink
"$SOURCE")"
[[
$SOURCE
!=
/*
]]
&&
SOURCE="$DIR/$SOURCE"
#
if
$SOURCE
was
a
relative
symlink,
we
need
to
resolve
it
relative
to
the
path
where
the
symlink
file
was
located
done
DIR="$(
cd
-P
"$(
dirname
"$SOURCE"
)"
&&
pwd
)"
也可与source,bash
-c命令使用
但是,如果你在脚本中使用先cd切换到其他目录,在运行时上面的命令片段时,则上面的命令不能等到正确的结果。可以参考关于$CDPATH
陷阱的文章。想理解它如何其作用的,可以运行下面的代码:
代码如下:
#!/bin/bash
SOURCE="${BASH_SOURCE[0]}"
while
[
-h
"$SOURCE"
];
do
#
resolve
$SOURCE
until
the
file
is
no
longer
a
symlink
TARGET="$(readlink
"$SOURCE")"
if
[[
$SOURCE
==
/*
]];
then
echo
"SOURCE
'$SOURCE'
is
an
absolute
symlink
to
'$TARGET'"
SOURCE="$TARGET"
else
DIR="$(
dirname
"$SOURCE"
)"
echo
"SOURCE
'$SOURCE'
is
a
relative
symlink
to
'$TARGET'
(relative
to
'$DIR')"
SOURCE="$DIR/$TARGET"
#
if
$SOURCE
was
a
relative
symlink,
we
need
to
resolve
it
relative
to
the
path
where
the
symlink
file
was
located
fi
done
echo
"SOURCE
is
'$SOURCE'"
RDIR="$(
dirname
"$SOURCE"
)"
DIR="$(
cd
-P
"$(
dirname
"$SOURCE"
)"
&&
pwd
)"
if
[
"$DIR"
!=
"$RDIR"
];
then
echo
"DIR
'$RDIR'
resolves
to
'$DIR'"
fi
echo
"DIR
is
'$DIR'"

⑻ linux如何查找以某个字母打头的文件或文件夹 比如,/etc目录下很多文件,我想列出所有以c开头的文件或文件

ls -al |grep c* 这样就可以了,运用管道命令|。

如何使用命令行在Linux中查找文件和文件夹

使用查找命令,“find”命令允许您搜索知道近似文件名的文件。该命令的最简单形式在当前目录中搜索文件,并递归地通过其与所提供的搜索条件匹配的子目录。您可以按名称,所有者,组,类型,权限,日期和其他条件搜索文件。

在提示符下键入以下命令将列出当前目录中的所有文件。

“find”后的点表示当前目录。

如果您只想要显示可执行文件的路径,而不是源和路径(man(页)),请使用该-b选项。例如,该命令whereis -b firefox将仅显示/usr/bin/firefox为结果。这很方便,因为您可能会比搜索该程序的源页面和手册页更频繁地搜索程序的可执行文件。您也可以仅搜索源文件(-s)或仅搜索手册页(-m)。

有关whereis命令的详细信息,请键入man whereis终端窗口,然后按Enter键。

  • 8

    了解Whereis命令与哪个命令之间的区别

    whereis命令显示命令的二进制,源和手册页的位置,而哪个命令仅显示命令的二进制文件的位置。

    whereis命令搜索二进制,源和man文件的特定目录列表,而哪个命令搜索当前用户的PATH环境变量中列出的目录。对于whereis命令,可以在命令的手册页的FILES部分中找到具体目录的列表。

    当涉及默认显示的结果时,whereis命令显示它找到的所有内容,而哪个命令只显示找到的第一个可执行文件。您可以使用-a前面讨论过的选项来更改该命令。

    因为whereis命令只使用硬编码到命令中的路径,所以您可能并不总是找到您要查找的内容。如果您正在搜索一个程序,则认为可能安装在whereis命令的手册页中未列出的目录中,您可能希望使用该-a选项以查找系统中所有出现的命令,

  • ⑼ 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。因为你的需求里,并未涉及文件创建个数的上限以及如果删掉某个文件后的需求。
    通常,如果你目录下文件个数固定似乎更好办一些。

    ⑽ C语言linux简单编程,遍历文件夹获得文件名,调试不对,求助!!谢谢!!

    opendir() 的参数不对。不应该是有通配符的*.jp2形式,而应该是一个指定的目录。
    看你的需求描述,建议你用scandir函数,可能更方便一些。
    scandir可以指定一个filter。只返回满足条件的项目。

    下面是参考linux中scandir man page 里的例子写的一段参考代码。

    #include <dirent.h>
    int myfilter(const struct dirent *)
    {
    // 如果文件以0开头且有.jp2后缀,返回1
    // 否则 返回0
    }

    main(){
    struct dirent **namelist;
    int n;
    n = scandir(DIRNAME, &namelist, myfilter, alphasort);
    if (n < 0)
    perror("scandir");
    else {
    while(n--) {
    printf("%s\n", namelist[n]->d_name);
    free(namelist[n]);
    }
    free(namelist);
    }
    }

    阅读全文

    与linuxc获取文件名相关的资料

    热点内容
    pythonlibrary中文 浏览:551
    客户管理系统破解源码 浏览:992
    程序员皮皮 浏览:411
    一个单片机一个程序 浏览:101
    python调用系统时间 浏览:767
    鸿蒙20怎么弄大文件夹 浏览:615
    美团的服务器是什么 浏览:359
    axure原型设计精髓pdf 浏览:379
    svox文件夹有用吗 浏览:508
    怎样才可以给软件添加密钥 浏览:589
    光纤通信原理pdf 浏览:209
    c需要用什么编译器 浏览:704
    python设置断点调试 浏览:315
    pc手柄怎么连接安卓 浏览:33
    dll解压不成功 浏览:346
    连接地址服务器失败是什么 浏览:401
    台达dvp14ss2编程电缆 浏览:135
    单片机开发板设置技巧 浏览:345
    阿里云服务器怎么配置git 浏览:416
    androidcameraid 浏览:432