linuxif文件不存在
Ⅰ 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判斷文件是否存在不存在則創建
# !/bin/sh echo "請輸入你要判斷的文件的完整路徑:" read filepath if [ -f $filepath ]; then echo "文件存在!" echo "文件在$filepath" else echo "文件不存在或者您輸入的路徑有誤" fi #end
Ⅲ linux判斷/opt/madie是否存在
如果ftp上的文件很大,獲取文件會很費時。應該可以不用獲取直接判斷的,下面供借鑒:
#!/bin/bashserver=127.0.0.1 #改為你自己的FTP伺服器IPuser=root #修改為你自己的FTP登錄用戶名password=root #修改為你自己的FTP用戶密碼errlog=./err.log #用於記錄FTP錯誤 ftpCheckFile(){ftp -n -i $server <<EOFUSER $userPASS $passwordls $1byeEOF} rm -f $errlogftpCheckFile $1 >/dev/null 2>$errlogbytes=`wc -c $errlog | awk '{print $1}'`if [ $bytes -eq 0 ]; then echo "$1 - Exist!"else echo "$1 - Not exist!"fi
用的時候在腳本名後跟一個參數,就是你要判斷的文件名或路徑名。
思路:如果文件或路徑不存在,FTP中的ls命令會執行錯誤,從而在錯誤日誌err.log中有記錄。
通過解析該錯誤日誌的內容,可以得知文件或目錄是否存在。
我這里暫時沒有環境試驗,所以沒法得知錯誤日誌的格式,只能暫且通過判斷日誌位元組大小是否為0來看是否發生了錯誤,而無法確定具體錯誤種類。
Ⅳ linux 判斷目錄里是否有文件
如果是在腳本中可以寫成:
if[[$(ls目錄名)]];then
echo"有文件"
else
echo"沒有"
fi
如果是在命令行中,可寫成一行:
if[[$(ls目錄名)]];thenecho"有文件";elseecho"沒有";fi
其中:
$(ls目錄名) 是目錄里文件的列表
if[[$(ls目錄名)]] 表示如果目錄內有文件為真,如果目錄內沒有文件則為假
Ⅳ 關於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 shell 判斷文件是否存在 存在就刪除
1、linux shell中判斷文件是否存在,可以使用test命令的-a參數。藉助於if結構進行判斷即可。
2、以~/t/thello.py為例,檢測這個文件,如果存在將其刪除,示例代碼如下:
if[[-a~/t/hello.py]];then
echo"存在文件";
rm-f~/t/hello.py
fi;
3、測試效果如下圖所示
Ⅶ 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
Ⅷ 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
Ⅸ 求一個Linux腳本,判斷文件是否存在即
#!/bin/bash
Filename=/usr/123.txt
File_time=`stat -c %Y $Filename`;
Sys_time=`date +%s`;
if [ ! -f /usr/123.txt ]; then
echo "0"
else
exit 0
if [ $[ $Sys_time - $File_time ] -gt 300 ];then
echo "1";
else
echo "0";
fi
fi
Ⅹ 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