linux shell 中判断文件、目录是否存在的方法
本文主要介绍了linuxshell中判断文件、目录是否存在的方法,分享给大家
-efilename如果filename存在,则为真
-dfilename如果filename为目录,则为真
-ffilename如果filename为常规文件,则为真
-Lfilename如果filename为符号链接,则为真
-rfilename如果filename可读,则为真
-wfilename如果filename可写,则为真
-xfilename如果filename可执行,则为真
-sfilename如果文件长度不为0,则为真
-hfilename如果文件是软链接,则为真
常用例子
如果存在某文件,则删除
if[-ftrials];thenrm${result_path}trials;fi
如果没有文件夹,则创建
if[!-d$result_name];then mkdir-p$result_name fi
shell命令判断文件或文件夹是否存在,先直接看实例:
#!/bin/sh #判断文件存在,判断是否为文件夹等 testPath="/Volumes/MacBookProHD/Mr.Wen/08shell命令" testFile="/Volumes/MacBookProHD/Mr.Wen/08shell命令/fileWen" #判断文件夹是否存在-d if[[!-d"$testPath"]];then echo"文件夹不存在" else echo"文件夹存在" fi #判断文件夹是否存在,并且具有可执行权限 if[[!-x"$testFile"]];then echo"文件不存在并且没有可执行权限" else echo"文件存在并有可执行权限" fi #判断文件是否存在 if[[!-f"$testFile"]];then echo"文件不存在" else echo"文件存在" fi
在shell命令脚本编写当中,会遇到各种对文件的判断,除了以上常用的判断,还有其他的可以使用,如下:
ConditionalLogiconFiles
-afileexists.
-bfileexistsandisablockspecialfile.
-cfileexistsandisacharacterspecialfile.
-dfileexistsandisadirectory.
-efileexists(justthesameas-a).
-ffileexistsandisaregularfile.
-gfileexistsandhasitssetgid(2)bitset.
-GfileexistsandhasthesamegroupIDasthisprocess.
-kfileexistsandhasitsstickybitset.
-Lfileexistsandisasymboliclink.
-nstringlengthisnotzero.
-oNamedoptionisseton.
-OfileexistsandisownedbytheuserIDofthisprocess.
-pfileexistsandisafirstin,firstout(FIFO)specialfileor
namedpipe.
-rfileexistsandisreadablebythecurrentprocess.
-sfileexistsandhasasizegreaterthanzero.
-Sfileexistsandisasocket.
-tfiledescriptornumberfildesisopenandassociatedwitha
terminaldevice.
-ufileexistsandhasitssetuid(2)bitset.
-wfileexistsandiswritablebythecurrentprocess.
-xfileexistsandisexecutablebythecurrentprocess.
-zstringlengthiszero.
shell判断文件内容是否改变
判断文件内容是否改变:
1)md5值判断
2)diff判断
#添加日志时间戳
functionfn_showlog()
{
localcurtime;
curtime=`date+"%Y%m%d-%H:%M:%S"`
echo"$curtime------$1";
}
#判断文件内容是否一致
functiondiff_file(){
forfilein`ls$1`
do
if[!-f"$2$file"];then
fn_showlog"存在新增文件:$2$file"
return0
else
diff$file$2$file
if[$?-ne0];then
fn_showlog"文件内容发生变化:$file"
return0
fi
fi
done
return1
}
diff_file"python*Ip""/home/admin/tools/"
if[$?-eq0];then
fn_showlog"内容发生改变......"
else
fn_showlog"内容未发生改变,退出脚本!"
exit0
fi
到此这篇关于linuxshell中判断文件、目录是否存在的方法的文章就介绍到这了,更多相关linuxshell判断文件存在内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!