我正在做一个我的项目,它使用了一个非常有限的Linux busybox shell。
我的shell没有像find
,awk
,grep
这样的命令,我正试图获取该机器上文件的完整列表。
到目前为止还没有,但是运行ls -la /*
完成了一半的工作,并显示了一个级别的文件。
你知道如何递归地运行ls
来获得文件和文件夹的完整列表吗?也许你知道其他的方法来做到这一点。
编辑#1:
我的ls没有-R选项。
ls -1 -LR /
ls: invalid option -- R
BusyBox v1.01 multi-call binary
Usage: ls [-1AacCdeilnLrSsTtuvwxXk] [filenames...]
List directory contents
Options:
-1 list files in a single column
-A do not list implied . and ..
-a do not hide entries starting with .
-C list entries by columns
-c with -l: show ctime
-d list directory entries instead of contents
-e list both full date and full time
-i list the i-node for each file
-l use a long listing format
-n list numeric UIDs and GIDs instead of names
-L list entries pointed to by symbolic links
-r sort the listing in reverse order
-S sort the listing by file size
-s list the size of each file, in blocks
-T NUM assume Tabstop every NUM columns
-t with -l: show modification time
-u with -l: show access time
-v sort the listing by version
-w NUM assume the terminal is NUM columns wide
-x list entries by lines instead of by columns
-X sort the listing by extension
3条答案
按热度按时间t2a7ltrp1#
从BusyBox的页面我可以看到你有
ls
的选项-R
:-R递归列出子目录
所以你可以这样写:
由于你没有
-R
选项,你可以尝试像这样的递归shell函数:然后你可以从
/
开始不带参数地调用它。如果你想从
/home
开始:如果你想写一个脚本:
说明
[ -z "${item##*/.}" -o -z "${item##*/..}" -o -z "${item##*/\*}" ] && continue
这一行只是排除了目录.
和..
以及未展开的项目(如果文件夹中没有文件,shell将模式保留为<some_folder>/*
)。这是有局限性的。它不显示文件的名称只是一个
*
../
以改善输出,然后递归地调用该目录的函数。ogsagwnx2#
另一种选择,对于
BusyBox
,如问题中所述。您可以尝试使用find
命令递归列出文件。zi8p0yeb3#
使用
在垂直格式中也看起来不错