我正在执行ls-R /files/
我得到了以下输出
./: nvision
./nvision: layout
./nvision/layout: abcd.txt
我希望在列表中找到路径,如
/nvision
/nvision/layout/
/nvision/layout/abcd.txt
我应该能够将所需的路径复制到变量
ps:我不是在寻找nvision
我正在尝试获取files
文件夹
任何人都可以帮助我
答案 0 :(得分:4)
您是否尝试过使用find
(see reference)
获取当前目录中的文件和文件夹列表就像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
答案 1 :(得分:2)
你应该真的使用find来做这些事情。只需使用find directory
即可。如果您需要更具体的输出格式,则可以使用find
的{{1}}选项。 Find是一个非常强大的工具,也允许各种过滤。请务必查看文档以获取更多信息:GNU FindUtils。
要将结果存储在变量中,请使用以下语句之一:
-printf
或
result=`find ...`
您还可以使用find使用result=$(find ...)
的{{1}}选项直接执行每个匹配的命令。再次,请务必查看文档。这真的很全面。
更新(Mac / UNIX用户 - Linux用户不受影响)
BSD find
需要一条路径。使用
-exec
而不仅仅是
find
如果您需要工作目录中所有文件的列表。
答案 2 :(得分: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