當前位置:首頁 » 操作系統 » linux判斷文件

linux判斷文件

發布時間: 2022-10-02 20:06:59

A. linux下如何判斷文件在哪個文件夾

inux下判斷文件和目錄是否存在[總結]

1、前言

工作中涉及到文件系統,有時候需要判斷文件和目錄是否存在。我結合APUE第四章文件和目錄,總結一下如何正確判斷文件和目錄是否存在,方便以後查詢。

2、stat系列函數

stat函數用來返回與文件有關的結構信息。stat系列函數有三種情況,分別對應文件名稱、文件描述符和符號鏈接文件。stat結構描述了文件的屬性,主要包括文件的類型、文件大小等等。詳細stat結構如下所示:
復制代碼

1 struct stat {
2 mode_t st_mode; // file type & mode(permissions)
3 ino_t st_ino; // i-node number(serial number)
4 dev_t st_dev; // device number(filesystem)
5 dev_t st_rdev; // device number for specials files
6 nlink_t st_nlink; // number of links
7 uid_t st_uid; // user ID of owner
8 gid_t st_gid; // group ID of owner
9 off_t st_size; // size in bytes, for regular files
10 time_t st_atime; // time of last access
11 time_t st_mtime; // time of last modification
12 time_t st_ctime; // time of last file status change
13 long st_blksize; // best I/O block size
14 long st_blocks; // number of 512-byte blocks allocated
15 };

復制代碼

我們可以通過stat獲取文件的類型和文件大小等信息。文件類型有:普通文件、目錄文件、塊特殊文件、字元特殊文件、FIFO、套接字和符號鏈接。要想通過stat系列函數來判斷文件或者目錄是否存在,當執行stat函數,如果文件存在時,還需進一步判斷該文件是普通文件還是目錄文件。

stat系列函數錯誤返回-1,錯誤碼存在errno中,errno取值如下:
復制代碼

1、ENOENT 參數file_name 指定的文件不存在
2、ENOTDIR 路徑中的目錄存在但卻非真正的目錄
3、ELOOP 欲打開的文件有過多符號連接問題, 上限為16 符號連接
4、EFAULT 參數buf 為無效指針, 指向無法存在的內存空間
5、EACCESS 存取文件時被拒絕
6、ENOMEM 核心內存不足
7、ENAMETOOLONG 參數file_name 的路徑名稱太長

復制代碼

B. linux 判斷目錄里是否有文件

如果是在腳本中可以寫成:


if[[$(ls目錄名)]];then
echo"有文件"
else
echo"沒有"
fi

如果是在命令行中,可寫成一行:

if[[$(ls目錄名)]];thenecho"有文件";elseecho"沒有";fi

其中:

$(ls目錄名) 是目錄里文件的列表

if[[$(ls目錄名)]] 表示如果目錄內有文件為真,如果目錄內沒有文件則為假

C. linux中如何判斷是普通文件還是目錄文件

使用ls命令即可區分文件夾和文件。示例:ls -la

說明:
-l 列出文件的詳細信息。
-a 列出目錄下的所有文件,包括以 . 開頭的隱含文件。

要判斷是文件還是文件夾,看第一列的內容即可,第一列的第一個字母指明了文件類型:-」表示普通文件,「d」代表目錄,「l」代表連接文件,「b」代表設備文件。

D. linux怎麼判斷文件類型

file只是將一些已有的文件中的特徵記錄拿出來,記錄在一個文本文件里,當你用file
myfile的時候,它就遍歷一下整個文件,看有沒有這個標志性的記錄.
呵呵,說白了,file只是給出點簡單的提示而已,因為你在一個文本里寫入:
Rar!
那麼它就會把這個文件當成個.rar文件,是不是很白痴啊.(不過它就是這個功能,僅僅是給點提示,所以也沒有什麼好說的了

E. linux shell 判斷文件是否存在

介紹了linux shell 中判斷文件、目錄是否存在的方法,分享給大家
-e filename 如果 filename存在,則為真
-d filename 如果 filename為目錄,則為真
-f filename 如果 filename為常規文件,則為真
-L filename 如果 filename為符號鏈接,則為真
-r filename 如果 filename可讀,則為真
-w filename 如果 filename可寫,則為真
-x filename 如果 filename可執行,則為真
-s filename 如果文件長度不為0,則為真
-h filename 如果文件是軟鏈接,則為真

F. linux中怎麼查看文件是否存在

兩個方式:find命令或者shell腳本。
1、find命令
find是linux下用於查找文件的通用方法。
find語法: find [指定查找目錄] [查找規則] [查找完後執行的action]
例如:find /tmp -name wa* -type l ,是在/tmp下查找名為wa開頭且類型為符號鏈接的文件。找到就表示存在。

2、shell腳本
在進行文件的自動處理中常常需要自動判別,下面的腳本判斷test.log是否存在,存在則顯示文件存在,否則顯示文件不存在。
例子:編輯一個腳本判斷文件是否存在

vi t.sh
#!/bin/bash
if [ -e /temp/test.log ];then //這里是判斷語句,-e表示進行比較結果為真則存在
echo "文件存在"
else

echo "文件不存在"
fi

保存退出
執行:
sh t.sh

G. linux 怎麼判斷一個文件是否完整

1、用哈希值
2、一般下載文件時候,官方都會提供一個校驗的md5或sha1哈希值
3、下載完計算一下哈希值對比一下就知道了
4、例如:cn_windows_10_ecation_version_1607_updated_jul_2016_x64_dvd_9056220.iso
SHA1:
下載後計算對比:
sha1sum filename
openssl sha1 filename

H. linux下如何判斷該文件是否是可執行程序

無所謂什麼可執行。隨便一個文件都可以用「./filename」來執行(filename文件在當前目錄內)。
如果該文件原本就不是設計用來執行的(隨便舉個例子,比如一個OpenOffice文檔文件),敲入命令後執行,屏幕會報錯,說某句不合語法啥的。如果這個文件就是設計用來執行的,比如你說的二進制和腳本文件,在代碼沒錯的情況下,敲入命令後就會有預期的執行結果了。
如果文件屬性里有x,那麼你可以「./filename」來運行。否則,用「sudo
./filename」來執行。
而且終端中用ls命令後,這類屬性帶x的會顯示綠色。

I. linux shell 如何判斷一個文件是否存在

了解你的意思,首先,test命令是判斷某一個特定的文件相關信息,也就是當你使用test這個命令的時候,你是清楚它叫什麼名字的(只是你不知道它的相關信息)。如果你要判斷比如你說的以hbc*開頭的一類文件,最好就是使用ls命令或者find命令來作。你可以參考一下,下面的小測試。
mike
>>>
ls
-d
???
12-04-20
23:15
acp/
apc/
scl
tmp/
xmy/
mike
>>>
test
-d
x??
12-04-20
23:15
mike
>>>
echo
$?
12-04-20
23:16
0
mike
>>>
test
-d
x*
12-04-20
23:16
test:
too
many
arguments
使用find命令能很好查找已hbc開頭的文件或者目錄,但是它不能判斷有沒有這樣的文件,因為你不能通過find的命令執行狀態來判斷是否有這樣的文件,但是可以把find的輸出導向到一個文件,從而對文件進行判斷。如下:
mike
>>>
find
./
-type
d
-name
"FUK*"
-print
12-04-20
23:24
mike
>>>
echo
$?
12-04-20
23:24
0

J. 關於linux,shell腳本中怎樣判斷文件是否有內容

可以用「test 條件表達式」進行測試,如:test -f /etc/fstab 測試文件/etc/fstab文件是否存在

-e File 如果文件File存在(Exist),則為True
-s File 如果文件File存在且文件大小(Size)大於零,則為True
-f File 如果文件File存在且是普通文件(File),則為True
-d File 如果文件File存在且是目錄(Directory),則為True
-b File 如果文件File存在且是塊(Block)特殊文件,則為True
-c File 如果文件File存在且是字元(Character)特殊文件,則為True
-L File 如果文件File存在且是符號鏈接(Link)文件,則為True
-r File 如果文件File存在且是可讀的(Readable),則為True
-w File 如果文件File存在且是可寫的(Writable),則為True
-x File 如果文件File存在且是可執行的(Executable),則為True
-O File 如果文件File存在且屬於當前用戶(Owner),則為True
-G File 如果文件File存在且屬於當前用戶組(Group),則為True
File1 -nt File2 如果文件File1新於(Newer Then) File2,則為True
File2 -ot File2 如果文件File1舊於(Older Then) File2,則為True

熱點內容
php建立數組 發布:2025-07-16 02:34:30 瀏覽:283
oracle存儲過程同步 發布:2025-07-16 02:29:18 瀏覽:940
歐諾s買哪個配置的好 發布:2025-07-16 02:26:22 瀏覽:558
熱點可以建立ftp嗎 發布:2025-07-16 02:26:21 瀏覽:303
如何選擇最佳配置 發布:2025-07-16 01:56:44 瀏覽:603
mad加密 發布:2025-07-16 01:52:12 瀏覽:424
linux64位內存 發布:2025-07-16 01:02:36 瀏覽:960
壓縮衣尺碼表 發布:2025-07-16 00:47:33 瀏覽:640
安卓恢復了出廠怎麼找回照片 發布:2025-07-16 00:43:56 瀏覽:933
為什麼說伺服器已停止響應 發布:2025-07-16 00:29:36 瀏覽:392