⑴ 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中怎麼查看文件是否存在
兩個方式: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下如何判斷該文件是否是可執行程序
無所謂什麼可執行。隨便一個文件都可以用「./filename」來執行(filename文件在當前目錄內)。
如果該文件原本就不是設計用來執行的(隨便舉個例子,比如一個OpenOffice文檔文件),敲入命令後執行,屏幕會報錯,說某句不合語法啥的。如果這個文件就是設計用來執行的,比如你說的二進制和腳本文件,在代碼沒錯的情況下,敲入命令後就會有預期的執行結果了。
如果文件屬性里有x,那麼你可以「./filename」來運行。否則,用「sudo
./filename」來執行。
而且終端中用ls命令後,這類屬性帶x的會顯示綠色。
⑷ 在linux下編寫shell腳本,判斷當前目錄下所有文件類型,如果是普通文件,顯示內容,如果是目錄
forfilein*
do
if[-f"$file"]
then
if[-s"$file"]
then
printf"File:$file "
cat"$file"
else
rm"$file"
fi
else[-d"$file"]
printf"Directory:$file "
ls"$file"
fi
printf" "
done
⑸ linux腳本編寫判斷文件是否變更並生成報告
你可以用rsync -azv 命令。它可以比對原先文件的時間,內容,以及許可權。你可以先用該命令那個目錄的內容備份出來。需要的時候就用備份出來的目錄內容比對原先系統目錄的內容,如果發生變化了,它會列表出來的。之後要怎麼做,都很簡單了。原始文件和變化文件你都有,可以任意操作。
⑹ linux shell腳本判斷某個文件的大小,符合條件則備份並重命名
cattest.sh
#!/bin/sh
FILE=$1
FILE_SIZE=`$FILE|awk'{print$2}'`
if[$FILE_SIZE-ge10485760]
then
cp-p$FILE$FILE-bak
fi
chmod+xtest.sh
./test.sh1.txt
逐行解釋
查看腳本文件test.sh
定義腳本默認用sh執行
將文件路徑賦予FILE變數。$1 表示位置變數即下面的1.txt
計算文件大小並賦予FILE_SIZE變數
如果文件大小大於等於10M. 10485760為10M,-ge為大於等於。
if語法關鍵字
將文件重命名備份
if語法關鍵字
空行
賦予腳本test.sh可執行許可權
執行腳本,輸入位置變數1.txt.
⑺ 編寫linux腳本,判斷一個文件中是否有指定的關鍵字,如果有執行命令,如果沒有執行其他命令
#!/bin/sh
ifgrep-qkeywordfilename
then
command
fi
keyword替換成你要的關鍵字,filename替換成你要判斷的文件名,command替換成你要執行的命令
⑻ linux腳本語言判斷文件許可權的參數是什麼
-r file用戶可讀為真
-w file用戶可寫為真
-x file用戶可執行為真
-f file文件為正規文件為真
-d file文件為目錄為真
-c file文件為字元特殊文件為真
-b file文件為塊特殊文件為真
-s file文件大小非0時為真
-t file當文件描述符(默認為1)指定的設備為終端時為真
如:
myPath="/var/log/httpd/"
myFile="/var /log/httpd/access.log"
#這里的-x 參數判斷$myPath是否存在並且是否具有可執行許可權
if [ ! -x "$myPath"]; then
mkdir "$myPath"
fi
#這里的-d 參數判斷$myPath是否存在
if [ ! -d "$myPath"]; then
mkdir "$myPath"
fi
#這里的-f參數判斷$myFile是否存在
if [ ! -f "$myFile" ]; then
touch "$myFile"
fi
⑼ linux的shell 腳本里怎麼用if 判斷文件大小呀
需要幾個工具 基本上思路是 用 配合awk取得文件大小 ,然後if判斷
偽代碼如下
s=` -k logfile|awk '{print $1}'`
if [ $s -gt 1024000000 ]
then
停止oracle監聽進程
rm -rf logfile && touch logfile
啟動oracle監聽進程
else
continue
fi
⑽ 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、測試效果如下圖所示