我写的脚本是ksh。需要直接在当前目录下查找仅包含文件而不包含子目录的所有目录名。
我知道我可以ls -alR
对第一个字段(d
对于目录)中的第一个字母使用输出并对其进行递归解析。我认为这awk
是解析和查找的最佳方法。
例如,ls -al
当前目录中的一个简单输出:
drwxr-xr-x 22 af staff 748 18 Mar 22:21 .
drwxr-xr-x 5 root admin 170 17 Mar 18:03 ..
-rw------- 1 af staff 3 17 Mar 16:37 .CFUserTextEncoding
drwxr-xr-x 5 af staff 170 17 Mar 17:12 Public
drwxr-xr-x 9 af staff 306 18 Mar 17:40 Sites
-rw------- 1 af staff 3 17 Mar 16:37 textd
…
此输出中有2个目录:Public
和Sites
。该目录Public
不包含子目录,但是包含子目录Sites
。中有3个子目录Sites
。因此,我只需要回显其中不包含目录的目录。就我而言,这仅仅是Sites
。
您根本不需要使用awk
。使用提供的内置测试,ksh
如下所示:
#!/bin/ksh
for NAME in *
do
FOUND=no
if [[ -d $NAME && $NAME != '.' && $NAME != '..' ]]
then
for SUBNAME in $NAME/*
do
if [[ -d $SUBNAME ]]
then
FOUND=yes
break
fi
done
if [[ $FOUND == no ]]
then
echo Found only files in $NAME
fi
fi
done
这个小脚本将查找当前目录中的所有目录,并告诉您它们是否仅包含文件,而不包含子目录。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句