1

我正在执行ls-R /files/

我得到以下输出

./:    nvision
./nvision:    layout
./nvision/layout:    abcd.txt 

我正在寻找列表中的路径,例如

/nvision
/nvision/layout/
/nvision/layout/abcd.txt

我应该能够将所需的路径复制到变量

ps:我不是在搜索 nvision 我正在尝试获取文件夹下的文件夹和文件files列表

谁能帮我

4

3 回答 3

4

您是否尝试过使用find (请参阅参考资料)

就像find .获取当前目录中的文件和文件夹列表一样简单。更改. 到任何路径以获取该路径内的文件和目录列表:

nvision
nvision/abcd.txt
nvision/layout

将其保存到变量

var=`find .`

并将初始斜线添加到每一行(如果需要)

var=`find . -exec echo /{} \;`

这里的var没有特殊含义,只是变量名。

要稍后使用该变量,您可以使用$var${var}。例如,打印或保存到文件:

# Print the variable content
echo $var

# Save the content of var to a file
echo $var > /tmp/file.txt
于 2013-02-26T11:12:13.257 回答
2

你真的应该使用 find 来处理这些事情。只需使用find directory. 如果您需要更具体的输出格式,您可以使用find'-printf选项。Find 是一个非常强大的工具,它还允许进行各种过滤。确保查看文档以获取更多信息:GNU FindUtils

要将结果存储在变量中,请使用以下语句之一:

result=`find ...`

或者

result=$(find ...)

您还可以使用 find 使用find'-exec选项为每个匹配项直接执行命令。同样,请务必查看文档。它真的很全面。

更新(Mac / UNIX 用户 – Linux 用户不受影响)

BSDfind需要路径。采用

find .

而不仅仅是

find

如果您需要工作目录中所有文件的列表。

于 2013-02-26T11:17:27.070 回答
1

答案就在这个页面上,你应该使用 find 列出所有找到的文件,你可以定义

在哪里 。是当前文件夹,否则替换 . 带有您希望搜索的路径

find .-type d -print 

仅列出目录或查找

或者

find . -type f -print

它将仅列出所有文件

如果您正在寻找两者

find . -print

如果您只想定义递归级别,请尝试

find . -maxdepth 1 -print

这是一个脚本

#!/bin/bash
for names in $(find . -type f -print); do
    echo $names
done
于 2013-02-26T12:05:44.803 回答