2012-01-25 61 views

回答

3

正如我previous answer你真的想用find。你想对行脚本7-10做些什么可以只用这个做:

find /home/user -type f -printf "%f\n" 
+1

你有没有真正尝试过吗?错误。 –

+1

@JoSo谢谢。下一次你可以告诉我,我忘了'\ n'。 – SiegeX

+0

是的,甚至更好,只是留在'找到/ home/user的型F',或者,做想要的东西OP,切换到'找到/ home/user中 - 而不是类型D';-) –

2

您可以使用-d运算符来检查是否$filename指向目录:

for filename in /home/user/* 
do 
    if [ ! -d "${filename}" ] 
    then 
    echo $filename 
    fi 
done; 

的详细信息和其他可用的运营商看到了test manpage

您还可以使用find command

find /home/user -not -type d -maxdepth 1 
0
while IFS='$\n' read -r filename 
    do echo "$filename" 
done < <(find /home/user/ -type f -maxdepth 1) 
7
for filename in /home/user/* 
do 
    if [ ! -d "$filename" ]; then 
     echo $filename 
    fi 
done 

或者,使用find命令:

find /home/user ! -type d -maxdepth 1 
+0

这是正确的答案(并请让我强调,这是很难得到与外壳相互作用'find'右) –

+0

当我用第一代码部分的是,它的回声'/ home/user中/的*'而不是文件夹的内容。 – Mechaflash

+0

@Mechaflash然后'/ home/user'是空的或者只有隐藏文件,为了得到隐藏的文件,你可以使用'/ home/user /.*'或'find',尽管有'find'命令正如Jo So所说的那样)你可能需要告诉我们你是如何使用它的,所以我们可以帮助你做到这一点。 – Kevin

0

您可以使用条件循环内的语句。像这样(未经):

if [ ! -d "$filename" ] 
then 
// do stuff 
fi 

-d是真实的,如果它是一个目录,而这与!反转。所以它会成功,如果它确实存在,而不是一个目录。

1

查找命令更适合你想要的。

find /home/user -type f