列出目录中的文件而不显示它们

时间:2015-01-28 09:52:27

标签: unix

我正在编写一个脚本,我需要在不显示文件的情况下列出文件。下面的脚本在执行时列出了​​我不想做的文件。只想检查目录中是否有文件然后执行“执行案例2”。 ls -lrt /a/b/c/ if [ $? != 0 ] then echo "executing case 2" else echo "日期+%D''%T No files found to process" >> $LOG

2 个答案:

答案 0 :(得分:0)

测试ls的返回代码对你来说不会有太多好处,因为在列出目录的两种情况下它都会返回零。

您可以使用grep执行此操作。

e.g:

ls | grep .
echo $?

如果grep匹配任何内容(文件存在),这将是'true'。如果不是,那就错了。

所以在你的例子中:

ls | grep .
if [ $? -eq 0 ] 
then 
    echo "Directory has contents"
else
    echo "directory is empty"
fi

虽然做这类事情时要小心 - 看起来你正处于忙碌等待测试的危险之中,这会让系统管理员感到不快。

答案 1 :(得分:0)

如果您不需要查看 ls 的输出,您可以将其设为条件:

[ "$(ls -lrt a/b/c)" ] && echo "Not Empty" || echo "Empty"

或者更好

[ "$(ls -A a/b/c)" ] && echo "Not Empty" || echo "Empty"

因为您不关心长输出(l)或显示顺序(rt)。

在脚本中,您可以在 if 语句中使用它:

#!/bin/sh

if [ "$(ls -A a/b/c)" ]; then
    echo "Not empty"
else
    echo "Empty"
fi