Linux 在Unix中将ls-R输出解析为变量
我正在执行一个ls-R/文件/ 我得到了以下输出Linux 在Unix中将ls-R输出解析为变量,linux,bash,shell,unix,scripting,Linux,Bash,Shell,Unix,Scripting,我正在执行一个ls-R/文件/ 我得到了以下输出 ./: nvision ./nvision: layout ./nvision/layout: abcd.txt 我希望得到清单中的路径,如 /nvision /nvision/layout/ /nvision/layout/abcd.txt 我应该能够将所需的路径复制到一个变量 附言:我不是在寻找nvision 我正在尝试获取文件夹下的文件夹和文件列表 有人能帮我吗你试过使用find吗 这很容易找到。获取当前目录中的文件
./: nvision
./nvision: layout
./nvision/layout: abcd.txt
我希望得到清单中的路径,如
/nvision
/nvision/layout/
/nvision/layout/abcd.txt
我应该能够将所需的路径复制到一个变量
附言:我不是在寻找nvision
我正在尝试获取文件夹下的文件夹和文件列表
有人能帮我吗你试过使用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
你试过使用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
你真的应该用find来处理这类事情。只需使用查找目录。如果需要更具体的输出格式,可以使用find的-printf选项。Find是一个非常强大的工具,它还允许进行各种过滤。请确保查看文档以了解更多信息: 要将结果存储在变量中,请使用以下语句之一:
result=`find ...`
或
您还可以使用find直接使用find的-exec选项为每个匹配执行命令。同样,请确保查看文档。它真的很全面
更新Mac/UNIX用户–Linux用户不受影响
BSD查找需要一个路径。使用
find .
而不仅仅是
find
如果您需要工作目录中所有文件的列表。您应该真正使用find来完成这类工作。只需使用查找目录。如果需要更具体的输出格式,可以使用find的-printf选项。Find是一个非常强大的工具,它还允许进行各种过滤。请确保查看文档以了解更多信息: 要将结果存储在变量中,请使用以下语句之一:
result=`find ...`
或
您还可以使用find直接使用find的-exec选项为每个匹配执行命令。同样,请确保查看文档。它真的很全面
更新Mac/UNIX用户–Linux用户不受影响
BSD查找需要一个路径。使用
find .
而不仅仅是
find
如果您需要工作目录中所有文件的列表。答案就在这一页上,您应该使用find,它列出了您可以定义的所有文件 在哪里。以其他方式替换当前文件夹。使用您希望搜索的路径
find .-type d -print
它只列出目录或查找
或
它将只列出所有文件
如果你正在寻找两者,那么
find . -print
如果您只想定义递归级别,请尝试
find . -maxdepth 1 -print
这是一个脚本
#!/bin/bash
for names in $(find . -type f -print); do
echo $names
done
答案就在这个页面上,你应该使用find,它列出了你可以定义的所有文件 在哪里。以其他方式替换当前文件夹。使用您希望搜索的路径
find .-type d -print
它只列出目录或查找
或
它将只列出所有文件
如果你正在寻找两者,那么
find . -print
如果您只想定义递归级别,请尝试
find . -maxdepth 1 -print
这是一个脚本
#!/bin/bash
for names in $(find . -type f -print); do
echo $names
done
ls-lR我试过了,但我没有得到我想要的使用find,ls基本上不应该在脚本中使用,它的输出是为人类准备的。我试过find,但我无法在脚本中使用它,@Mat,你能帮我一下命令吗,当我在控制台中尝试Find命令时,我得到以下错误参数格式不正确。那么,当文件夹中有多个文件时,会发生什么情况?然后,您希望执行什么操作?因为在ls-R输出中有/folder:file1 file2 file3,所以它是固定的,所以我只尝试了一个folderls-lR,但我没有得到我想要的使用find,ls基本上不应该在脚本中使用,它的输出是针对人类的。我尝试了find,但我无法在脚本中使用它,@Mat,请您帮助我使用该命令,当我尝试在控制台中查找命令时,我得到以下错误参数格式不正确。那么,当文件夹中有多个文件时,会发生什么情况?您希望执行什么操作?因为在ls-R输出中,您有/folder:file1 file2 file3,所以它是固定的,所以只有一个folder如果您有GNU查找可用,您可以使用-printf而不是-exec echo。这样就不用为找到的每个文件启动一个进程了
nd.exe未正确配置,它正在拾取windows find.exe,但失败。现在find命令正在运行。如果您有GNU find可用,则可以使用-printf而不是-exec echo。这节省了为找到的每个文件启动进程的时间。我发现find.exe没有正确配置,它正在拾取windows find.exe,但失败了。现在find命令运行得非常好