⑴ 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='