導航:首頁 > 操作系統 > linux判斷文件為空

linux判斷文件為空

發布時間:2022-11-25 08:17:33

linux中怎麼找出空文件夾

可以使用find命令。find是最常見和最強大的查找命令,你可以用它找到任何你想找的文件。
find的使用格式如下:$ find <指定目錄> <指定條件> <指定動作>
如果什麼參數也不加,find默認搜索當前目錄及其子目錄,並且不過濾任何結果(也就是返回所有文件),將它們全都顯示在屏幕上。
對於本問題來說,可以使用-type d約束只搜尋文件夾,使用-empty約束尋找空文件夾。
find -type d –empty //可參考《linux就該這么學》第二站

Ⅱ linux腳本開發-關於壓縮文件腳本的判斷修改

你可以判斷文件是否為空,如果為空不壓縮,如果不為空則可以壓縮,,if [[ ! -s filename ]] <==如果文件存在且為空,-s代表存在不為空,!將他取反
then
ok
fi你自己把代碼再改改..

Ⅲ linux 判斷一個目錄是不是為空的

while(dq = readdir(dir)){
if(strcmp(dq->d_name,".")==0||strcmp(dq->d_name,"..")==0)
continue;//這里可以忽略"."和".."
else if(dq->d_type == DT_DIR){
printf("目錄:%s\n",dq->d_name);
char buf[256]={};
sprintf(buf,"%s/%s",path,dq->d_name);
rmdir(buf);
del_dir(buf);
}

else
printf("文件:%s\n",dq->d_name);
}這里是遍歷整個目錄的代碼
給我13億個贊,不要多

Ⅳ linux shell編程 test 如何判斷文件類型,如果文件為空

-e file 如果 file存在,則為真
-d file 如果 file為目錄,則為真
-f file 如果 file為常規文件,則為真
-L file 如果 file為符號鏈接,則為真
-r file 如果 file可讀,則為真
-w file 如果 file可寫,則為真
-x file 如果 file可執行,則為真
-s file 如果 file長度不為0,則為真
-h file 如果 file是軟鏈接,則為真

Ⅳ Linux find 命令詳解

find 命令的基本結構如下:
find [paths] [expression] [actions]

find 命令接受一個或多個 路徑 ( paths )作為搜索范圍,並在該路徑下 遞歸 地搜索。即檢索完指定的目錄後,還會對該目錄下的子目錄進行檢索,以及子目錄下的子目錄。。。直到到達目錄樹底部。

默認情況下(不帶任何搜索條件),find 命令會返回指定目錄下的 所有文件 ,所以常常需要通過特定的 expression 對結果進行 篩選

find 命令默認的 action 是將所有檢索結果列印至標准輸出。可以通過自定義 action ,讓 find 命令對搜索到的結果執行特定的操作。

這里先不做詳細解釋,簡單地測試下 find 命令:

find 命令中的 -name 選項可以根據文件名稱進行檢索( 區分大小寫 )。如需要忽略文件名中的大小寫,可以使用 -iname 選項。

-name 和 -iname 兩個選項都支持 wildcards 。如:

find /usr -name '*.txt' 查找 /usr 目錄下所有文件名以 .txt 結尾的文件
find /usr -name '????' 查找 /usr 目錄下所有文件名剛好為 4 個字元的文件

有些時候,你需要在搜索時匹配某個文件或目錄的 完整路徑 ,而不僅僅是匹配文件名。可以使用 -path 或 -ipath 選項。

如查找 /usr 下所有文件名以 .txt 結尾的文件或目錄,且該文件的父目錄必須是 src 。可以使用以下命令:
find /usr -path '*/src/*.txt'

如果只想搜索得到文件 目錄,即不想它們同時出現在結果中。可以使用 -type 選項指定文件類型。

-type 選項最常用的參數如下:

find /usr -type d -name 'python*' 檢索 /usr 下所有文件名以 python 開頭的 目錄

find 命令支持 -empty 選項用來檢索 為空 的文件或目錄。空文件即文件里沒有任何內容,空目錄即目錄中沒有任何文件或子目錄。

find ~ -type d -empty 檢索用戶主目錄下所有的空目錄

find 命令也允許用戶對當前的匹配條件進行 「反義」 (類似於 邏輯非 操作)。

如需要檢索 /usr 下所有文件名 以 .txt 為後綴的文件。可以使用以下命令:
find /usr -type f ! -name '*.txt'

也可以「翻轉」任何其他的篩選條件,如:
find /usr -type f ! -empty 檢索 /usr 下所有內容不為空的文件

為了檢索歸屬於特定用戶的文件或目錄,可以使用 -user 選項。

find / -type f -user starky 檢索根目錄下所有屬主為 starky 的文件

類似於 -user 選項, -group 選項則可以根據文件或目錄的 屬組 進行檢索。

有些時候,需要根據文件創建或修改的時間進行檢索。

Linux 系統中,與文件相關聯的時間參數有以下三種:

與此對應的是 find 命令中的 -mtime , -atime 和 -ctime 三個選項。

這三個選項的使用遵循以下示例中的規則:

find /usr -type f -mtime 2 檢索 /usr 下兩天前被修改過的文件

如果覺得 -mtime 等選項以 為單位時間有點長,還可以使用 -mmin , -amin , -cmin 三個選項:
find /usr -type f -mtime +50 -mtime -100 檢索 /usr 下 50 到 100 天之前修改過的文件
find /usr -type f -mtime 2 -amin 5 檢索 /usr 下兩天前被修改過且 5 分鍾前又讀取過的文件

-size 選項允許用戶通過文件大小進行搜索(只適用於文件,目錄沒有大小……)。

表示文件大小的單位由以下字元組成:

另外,還可以使用 + 或 - 符號表示 大於 小於 當前條件。

find / -size +1G 檢索文件大小高於 1 GB 的文件

find 命令可以使用 -perm 選項以文件許可權為依據進行搜索。

如需要檢索 /usr 目錄下許可權為 rwxr-xr-x 的文件,可以使用以下命令:
find /usr -perm u=rwx,g=rx,o=rx

搜索 /usr 目錄下所有許可權為 r-xr-xr-x (即系統中的所有用戶都只有讀寫許可權)的文件和目錄,可以使用以下命令:
find /usr -perm a=rx

很多時候,我們只想匹配文件許可權的一個 子集 。比如,檢索可以直接被任何用戶執行的文件,即只關心文件的執行許可權,而不用管其讀寫許可權是什麼。

上述的需求可以通過以下命令實現: find / -type f -perm /a=x
其中 a=x 前面的 / 符號即用來表示只匹配許可權的某個子集(執行許可權),而不用關心其他許可權的具體設置。

-perm 選項也支持數字形式的文件許可權標記。

find /usr -perm 644 搜索 /usr 目錄下許可權為 644 (即 rwxr-xr-x )的文件

find 命令默認是以 遞歸 的方式檢索項目的,這有時候會導致得到的結果數量非常巨大。可以使用 -maxdepth 限制 find 命令遞歸的層數。

find / -maxdepth 3 搜索時向下遞歸的層數最大為 3

在之前的例子中有出現多個搜索條件的 組合 以及對某個搜索條件的 反轉
實際上 find 命令支持 「and」 「or」 兩種邏輯運算,對應的命令選項分別是 -a 和 -o 。通過這兩個選項可以對搜索條件進行更復雜的組合。

此外還可以使用 小括弧 對搜索條件進行 分組 。注意 find 命令中的小括弧常需要用 單引號 包裹起來。因小括弧在 Shell 中有特殊的含義。

如檢索 /usr 下文件名以 python 開頭且類型為目錄的文件
find /usr -type d -name 'python*'

該命令等同於:
find /usr -type d -a -name 'python*'

更復雜的組合形式如:
find / '(' -mmin -5 -o -mtime +50 ')' -a -type f

-delete 選項可以用來刪除搜索到的文件和目錄。

如刪除 home 目錄下所有的空目錄:
find ~ -type d -empty -delete

-exec 選項可以對搜索到的結果執行特定的命令。

如需要將 home 目錄下所有的 MP3 音頻文件復制到移動存儲設備(假設路徑是 /media/MyDrive ),可使用下面的命令:
find ~ -type f -name '*.mp3' -exec cp {} /media/MyDrive ''

其中的 大括弧 ( {} )作為檢索到的文件的 佔位符 ,而分號( ; )作為命令結束的標志。因為分號是 Shell 中有特殊含義的符號,所以需要使用單引號括起來。
每當 find 命令檢索到一個符合條件的文件,會使用其完整路徑取代命令中的 {} ,然後執行 -exec 後面的命令一次。

另一個很重要的用法是,在多個文件中檢索某個指定的字元串。
如在用戶主目錄下的所有文件中檢索字元串 hello ,可以使用如下命令:
find ~ -type f -exec grep -l hello {} ''

創建 Gzip 格式的壓縮文件的命令為: tar -czvf filename.tar.gz <list of files>

現在假設需要將用戶主目錄下所有的 MP3 文件添加到壓縮包 music.tar.gz 中,直觀的感覺是,其命令應為如下形式:
find ~ -type f -name '*.mp3' -exec tar -czvf music.tar.gz {} ''

實際情況是,這樣得到的 music.tar.gz 其實只包含一個 MP3 文件。
原因是 find 命令 每次 發現一個音頻文件,都會再執行一次 -exec 選項後面的壓縮命令。導致先前生成的壓縮包被覆蓋。

可以先讓 find 命令檢索出所有符合條件的音頻文件,再將得到的 文件列表 傳遞給後面的壓縮命令。完整的命令如下:
find ~ -type f -name '*.mp3' -exec tar -czvf music.tar.gz {} +

如果想瀏覽搜索到的文件(目錄)的詳細信息(如許可權和大小等),可以直接使用 -ls 選項。

find / -type file -size +1G -ls 瀏覽所有 1G 以上大小的文件的詳細信息

A Guide to the Linux 「Find」 Command
find 命令手冊 : man find

Ⅵ linux 判斷目錄里是否有文件

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


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

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

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

其中:

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

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

Ⅶ linux file命令

file [-beLvz][-f <名稱文件>][-m <魔法數字文件>...][文件或目錄...]
【功能】
辨識文件類型。
【舉例】
*檢查文件類型:
$ file file.cfile /dev/hda
輸入之後,輸出如下:
file.c: C program text
file: ELF 32-bit LSB executable, Intel 80386,version 1,
dynamically linked, notstripped
/dev/hda: block special
*檢查文件類型,不輸出文件名:
$file -b test/
輸入之後,輸出如下:
directory
*檢查文件類型,文件名和結果用,隔開:
$file -F,example/
輸入之後,輸出如下:
example, directory
這里可以指定其它的分割字元。
*檢查塊文件內部,獲得文件系統信息
$ file -s/dev/hda{,1,2,3,4,5,6,7,8,9,10}
輸入之後,輸出如下:
/dev/hda: x86 boot sector
/dev/hda1: Linux/i386 ext2 filesystem
/dev/hda2: x86 boot sector
/dev/hda3: x86 boot sector, extended partition table
/dev/hda4: Linux/i386 ext2 filesystem
/dev/hda5: Linux/i386 swap file
/dev/hda6: Linux/i386 swap file
/dev/hda7: Linux/i386 swap file
/dev/hda8: Linux/i386 swap file
/dev/hda9: empty
/dev/hda10: empty
這里,如果沒有許可權,執行不了。
【描述】
ile 命令的使用. File 命令試圖檢查每個參數以判定文件的類型. 檢查共有三組,按如下順序進行:文件系統檢查,幻數檢查,以及語言檢查. 文件系統檢查成功則輸出文件類型.
輸出的類型一般會包含以下的詞中的一個: text (文件中僅有 ASCII 字元,可以用 ASCII 終端讀此文件,以保證內容的可靠性), executable (文件中保存的是程序編譯後的結果,一些UNIX 內核或其它內核能理解這類文件), 或者 data 表示所有其它類型文件(data 一般為二進制文件或者不可列印的). 但是有的常用的文件格式(如core文件、tar包),雖然也包含二進制數據,卻不屬於這一類如果要修改 /usr/share/magic 或者程序本身, preserve these keywords . 當文件為``text'' 類型時,認為此文件為可讀文件. 不要象在Berkeley環境中那樣做 - 要把``shell commands text''改為``shell script''.
文件系統檢查是建立在對 stat(2) 系統調用結果的分析上的. 程序會分析文件是否為空,或者是否是某種特殊文件. 對於所有可在現有系統上使用的文件類型 (比如套介面文件,動態鏈接文件,命名管道文件(FIFOs) 等),只要它在系統頭文件 sys/stat.h 中已經定義過,就可以被檢查到.
幻數檢查用來檢查文件中是否有特殊的固定格式的數據. 規范的例子如二進制可執行文件(編譯後的程序) a.out ,該文件格式在標准include目錄下的 a.out.h 文件中定義,也可能在 exec.h 中定義. 這些文件在文件開始部分附近的一個特殊位置保存有一個'幻數' , 通過幻數告訴UNIX 操作系統此文件是二進制可執行文件, 和其中包含的其它類型. 幻數的概念已經擴展到數據文件.任何在文件固定位置有與文件類型相關的不變標識符的文件都可以這樣表示. 這些文件中的信息可以從幻數文件 /usr/share/magic 中讀取.

如果文件為 ASCII 文件, file 會試圖檢查它的語言. 語言檢查在文件開始的幾個塊中(任意位置)查找是否有特殊字元串(參看 names.h) .br 指出此文件很可能是 troff(1) 輸入文件, 而關鍵字 struct 指出此文件是C程序. 語言檢查不如前兩組檢查可靠,所以放在最後執行.它也用來檢查一些混合文件(例如 tar(1) 存檔文件)並確定文件是`ascii text'類型還是`data'類型.
選項
-b
不輸出文件名 (簡要模式).
-c
檢查時列印輸出幻數文件的解析結果.常與 -m 一起使用,用來在安裝幻數文件之前調試它.
-f 命名文件
從在參數表前的命名文件中讀出將要檢查的文件名(每行一個文件).要有命名文件,或者至少有一個文件名參數; 如果要檢查標准輸入, 使用``-''作為文件參數.
-m list
指定包含幻數的文件列表.可以是單個文件,也可以是用冒號分開的多個文件.
-n
每檢查完一個文件就強制刷新標准輸出. 僅在檢查一組文件時才有效. 一般在將文件類型輸出到管道時才採用此選項.
-v
列印程序版本並退出.
-z
試圖查看壓縮文件內部信息.
-L
(在支持符號鏈接的系統上)選項顯示符號鏈接文件的原文件, 就像 ls(1) 命令的like-named 選項.
-s
通常, file 只是試圖去檢查在文件列表中那些 stat(2) 報告為正常文件的文件的類型.由於讀特殊文件將可能導致不可知後果,所以這樣可以防止發生問題.使用 -s 選項時 file 命令也將去讀文件列表中的塊特殊文件和字元特殊文件. 一般用於從原始磁碟分區中獲得文件系統類型,此文件為塊特殊文件. 這個選項也導致 file 命令忽略 stat(2) 報告的文件大小,因為在有些系統中原始磁碟分區的大小報告為0.

【其它】
文件
/usr/share/magic - 默認的幻數列表
ENVIRONMENT
環境變數 MAGIC 用於設置默認的幻數文件.
參看
magic(4) - 幻數文件的格式.
strings(1), od(1),hexmp(1) - 檢查非textfile的工具.
標準的一致性
本程序比System V 的FILE命令強大, 幾乎能分辨出所有的模糊語言. 與System V 的FILE命令大部分兼容.本版本能識別更多的magic, 但是,也將因此在有些情況下會產生不同輸出(盡管更加精確).
本版本與System V的顯著區別就是本版本對空格是作為分隔符來處理的, 所以不能在格式字元串中包含空格. 例如,現有幻數文件中的
>10 string language impress (imPRESSdata)
要改為
>10 string language\ impress (imPRESSdata)
另外, 格式字元串中的反斜線符號也要避免.例如,現有幻數文件中的
0 string \begindata Andrew Toolkit document
要改為
0 string \\begindata Andrew Toolkit document

SunOS releases 3.2及以後的版本包括從System V 發展來的 file(1) 命令,但有所擴展.本版本與Sun的file命令差別不大.它包括對 `&' 操作符的擴展,例如,
>16 long&0x7fffffff >0 not stripped
MAGIC DIRECTORY
幻數文件項主要是從USENET收集來的,許多人都為此作出了貢獻. Christos Zoulas (下邊將提到的)將收集附加項信息及修正幻數文件項. 幻數文件項的合並表將會定時發布.
幻數文件項的順序非常重要.不同的系統上的幻數項放的順序可能不同. 如果老的 file 命令使用幻數文件,請將舊的幻數文件改名保存, (如改為 /usr/share/magic.orig) 以便日後做比較用.

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

兩個方式:find命令或者shell腳本。

1、find命令

(1)find是linux下用於查找文件的通用方法。

(2)find語法: find [指定查找目錄] [查找規則] [查找完後執行的action]

(3)例如:find /tmp -name wa* -type l ,是在/tmp下查找名為wa開頭且類型為符號鏈接的文件。找到就表示存在。

2、shell腳本

(1)在進行文件的自動處理中常常需要自動判別,下面的腳本判斷test.log是否存在,存在則顯示文件存在,否則顯示文件不存在。

(2)例子:編輯一個腳本判斷文件是否存在。

vi t.sh

#!/bin/bash

if [ -e /temp/test.log ];then //這里是判斷語句,-e表示進行比較結果為真則存在

echo "文件存在"

else

echo "文件不存在"

fi

保存退出

執行:

sh t.sh

Ⅸ 關於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

Ⅹ linux makefile 判斷文件存在與否

makefile判斷文件存在如下的兩種方法:
1. 調用shell的函數進行判斷
exist = $(shell if [ -f $(FILE) ]; then echo "exist"; else echo "notexist"; fi;)
ifeq (exist, "exist")
#do something here
endif當然,這個方法很土,但是能夠工作!! 2. 使用makefile的函數進行判斷ifeq ($(FILE), $(wildcard $(FILE)))
#do something here
endif $(wildcard $(FILE))的意思是當前路徑下的文件名匹配FILE的文件展開。假設當前路徑下存在a.c 和 b.c,那麼執行src=$(wildcard *.c)src的值就為a.c b.c;如果不使用通配符,比如src=$(wildcard c.c);那麼就是要展開當前路徑下,文件名為c.c的文件,因為當前路徑下文件不存在,因此src為空字元串。

閱讀全文

與linux判斷文件為空相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:144
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163