shell腳本怎麼判斷目錄
『壹』 shell 腳本 判斷是不是目錄
在 Linux 的 SHELL 編程中,使用 -d filename 選項來判斷 filename 是否為目錄,若 filename 為目錄,則返回值為真。
『貳』 shell腳本判斷文件夾下是否有文件
search_dir=/tmp/test
include_subdir=1
if[$include_subdir-eq1];then
n=$(find$search_dir-typef-execsh-c'printf"%s ""$1";kill"$PPID"'sh{};|grep-v"Terminated"|wc-l)
else
n=$(find$search_dir-maxdepth1-typef-execsh-c'printf"%s ""$1";kill"$PPID"'sh{};|grep-v"Terminated"|wc-l)
fi
結果 n 為 0 表示指定目錄下面沒有文件,否則有文件。如果不需要檢查指定目錄下的子目錄,把 include_subdir 置為 0 即可。find 命令中較復雜的那部分是為了實現找到第一個文件時就停止查找,避免檢查有大量文件的目錄時影響性能。
『叄』 編寫一個shell腳本,依次判斷位置參數$1-$9代表的文件名,在當前目錄下是否存在
題主你好,
代碼及測試截圖如下:
說明: 上圖共有3條命令:
第一條: ls -l列出了當前文件夾中共有5個文件, 分別為A,B,C,D,user.sh.這裡面user.sh是我們的腳本文件;
第二條: cat user.sh 看一下user.sh這個腳本中的內容;
第三條: ./user.sh A B C E 執行腳本;
*.這裡面代碼中沒有明確給出$1-$9,而是直接使用的$@,題主看一下,如果不行的話代碼可以改成包含$1到$9的
希望可以幫到題主,歡迎追問
『肆』 shell腳本,判斷一個目錄內是文件還是子目錄
說下幾種思路:
1)
find
.
-type
f
2)
find
!
-type
d
3)
ls
-Rl
|
awk
'NF>2&&/^[^d]/'
這三種情況可作相同判斷:如果結果為空,那就全是目錄。
在上述命令後加
>/dev/null
2>&1,然後判斷:
if
[
$?-eq
0
];
then
echo
"All
are
files."
else
echo
"All
are
directories."
fi
『伍』 shell腳本如何判斷目錄下的多個文件夾是否為空
directoy=./
find
${directoy}
-type
d
|
xargs
-sh
|
grep
^0
|
awk
'{print
$2}'
先在指定目錄下查找
目錄文件,
然後用
-sh
計算目錄大小,
找出大小為0的目錄,然後列印出來即可
若是不希望循環查找下去,可以只查找本級目錄:
ls
-l
|
grep
^d
|
awk
'{print
$NF}'
|
xargs
-sh
|
grep
^0
|
awk
'{print
$2}'
還有個比較完善的解答:
directoy=./
ls
-l
${directoy}
|
grep
^d
|
awk
'{printf("%s/%s\n",dir,$NF)}'
dir=${directoy}
|
xargs
-sh
|
grep
^0
|
awk
'{print
$2}'
『陸』 shell腳本實現用戶鍵盤輸入目錄名,判定/home目錄下是否有同名的目錄存在
vim shdir.sh
#!/bin/bash
read -p "輸入文件夾名稱:" dir
if [ -d /home/$dir ]
then
echo $dir
else
mkdir $dir
fi
chmod u+x shdir.sh
這個腳本不能檢測和創建帶空格的文件夾
『柒』 Shell腳本中判斷文件,目錄是否存在或者具有
#!/bin/sh
NovaPath=」/var/log/httpd/」
NovaFile=」/var /log/httpd/access.log」
#這里的-x 參數判斷$NovaPath是否存在並且是否具有可執行許可權
if [ ! -x "$NovaPath"]; then
mkdir 「$NovaPath」
fi
#這里的-d 參數判斷$NovaPath是否存在
if [ ! -d "$NovaPath"]; then
mkdir 「$NovaPath」
fi
#這里的-f參數判斷$NovaFile是否存在
if [ ! -f "$NovaFile" ]; then
touch 「$NovaFile」
fi
#其他參數還有-n,-n是判斷一個變數是否是否有值
if [ ! -n "$NovaVar" ]; then
echo 「$NovaVar is empty」
exit 0
fi
#兩個變數判斷是否相等
if [ "$var1" = "$var2" ]; then
echo 『$var1 eq $var2′
else
echo 『$var1 not eq $var2′
fi
『捌』 編寫shell腳本,對任意指定的目錄,判斷目錄是否存在。若存在,遍歷此目錄中所有
咨詢記錄 · 回答於2021-08-05