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