2

我想获取目录中的非目录文件列表。该find命令有效,但该maxdepth 1选项无效,可能是因为 Aix 不支持它。

这个命令:

find . -maxdepth 1 -type f  

返回:

find: bad option -maxdepth

我使用了这个命令:

ls -l | grep ^- | awk '{print $9}'

但如果文件名包含空格,这将不起作用。有没有办法解决这个问题?

4

2 回答 2

1

离开你的最后一次尝试,这似乎工作正常:

ls -l | grep ^- | awk '{for(i=1;i<9;i++) $i="";print}' | sed 's/^        //'

可能有更好的方法(我希望有!)但这会折叠前八个字段,留下八个空格,然后是行的其余部分(所以文件名中的空格是可以的),然后删除前八个空格.

我更喜欢这个切入正题的 bash 版本:

for f in *; do if [ -f "$f" ]; then echo "$f"; fi; done

我相信你可以为 ksh 调整它(我不熟悉)。

我仍然希望其他人会知道更直接的事情。

于 2012-06-27T07:47:18.927 回答
0

对于名称中包含多个空格的文件,这似乎对我有用。将其缩减为单个管道。
我个人想找到更优雅的东西。

ls -l | awk '/^-/ {for(i=9;i<=NF;i++){printf "%s ", $i}print "";}'
于 2014-04-14T19:53:32.583 回答