在UNIX中循环列表文件

时间:2014-06-13 19:31:07

标签: loops unix

我给了命令

ls -lrt

,列出的文件和目录是

drwxr-xr-x   4 root root    4096 Feb  2  2014 abc
drwxr-xr-x   4 root root    4096 Feb  2  2014 cde
drwxr-xr-x   4 root root    4096 Feb  2  20014 efg
-rwxr-xr-x   4 root root    4096 Feb  2  20014 aaa.txt

现在我想通过使用循环来查找列出的输出文件是否是目录。

提前致谢。

3 个答案:

答案 0 :(得分:1)

for l in `ls -l|awk '{print $9}'`
do
    p=`file $l`
echo $p
done

其他选项是检查权限中的第一个选项。 " d"目录。 " - "文件

编辑:

for l in `ls -l|grep -v total |awk '{print $1}'|cut -b1`
do
if [ $l == "-" ]
then
    echo "File"
else
if [ $l == "d" ]
then
    echo "Directory"
fi
fi
done

答案 1 :(得分:0)

这听起来像是一个X / Y问题,你要求X但实际上想要Y.

您是否想要获取所有目录的列表?使用find命令。

find . -type d

答案 2 :(得分:0)

你是说这样的意思吗?在bash:

  

ls |读取f;做测试-d" $ f" &安培;&安培; echo $ f是一个目录|| echo $ f不是目录;完成

列出当前目录中的所有文件,并检查每个文件是否都是目录。要测试子目录中的目录,请替换最初的" ls"用"找到"。