導航:首頁 > 操作系統 > 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獲取文件名相關的資料

    熱點內容
    安卓手機絕地求生如何進入國際服 瀏覽:18
    汽車活動廣告宣傳有什麼app 瀏覽:753
    富二代f2抖音app怎麼玩 瀏覽:926
    java線程啟動線程的方法 瀏覽:252
    兩位數互補演算法 瀏覽:781
    甲骨文雲伺服器登錄 瀏覽:776
    程序員那麼可愛在哪裡可以免費觀看 瀏覽:566
    台灣伺服器地址大全 瀏覽:192
    安卓自動美顏怎麼關 瀏覽:960
    java手動釋放內存 瀏覽:868
    迷你世界怎麼自己創伺服器 瀏覽:811
    cmd命令不能運行 瀏覽:298
    最新pdf閱讀 瀏覽:756
    c語言中的排序演算法 瀏覽:597
    php原生鏈接資料庫 瀏覽:45
    web前端後端程序員 瀏覽:25
    萬能zip的壓縮包怎麼解壓 瀏覽:41
    國內動漫用什麼app看 瀏覽:354
    樹莓派高級編程 瀏覽:929
    30歲學編程晚嗎 瀏覽:69