首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在shell脚本中获取目录中的文件列表?

如何在shell脚本中获取目录中的文件列表?
EN

Stack Overflow用户
提问于 2010-03-13 14:03:45
回答 8查看 721.2K关注 0票数 213

我正在尝试使用shell脚本获取目录的内容。

我的脚本是:

代码语言:javascript
复制
for entry in `ls $search_dir`; do
    echo $entry
done

其中$search_dir是相对路径。但是,$search_dir包含许多名称中包含空格的文件。在这种情况下,此脚本不会按预期运行。

我知道我可以使用for entry in *,但它只适用于我当前的目录。

我知道我可以切换到该目录,使用for entry in *,然后切换回原来的目录,但我的特殊情况使我无法这样做。

我有两个相对路径$search_dir$work_dir,我必须同时处理这两个路径,读取它们并在其中创建/删除文件等。

那么我现在该怎么做呢?

附言:我使用bash。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-03-13 14:08:12

代码语言:javascript
复制
for entry in "$search_dir"/*
do
  echo "$entry"
done
票数 368
EN

Stack Overflow用户

发布于 2017-04-27 23:08:50

这是一种语法更容易理解的方法:

代码语言:javascript
复制
yourfilenames=`ls ./*.txt`
for eachfile in $yourfilenames
do
   echo $eachfile
done

./是当前工作目录,但可以替换为任何路径

*.txt返回anything.txt

您可以通过直接在终端中键入ls命令来轻松查看列出的内容。

基本上,您创建了一个变量yourfilenames,其中包含list命令作为单独元素返回的所有内容,然后遍历它。该循环创建一个临时变量eachfile,该变量包含循环通过的变量的单个元素,在本例中是一个文件名。这不一定比其他答案更好,但我觉得很直观,因为我已经熟悉了ls命令和for循环语法。

票数 49
EN

Stack Overflow用户

发布于 2014-10-24 00:13:52

这里的其他答案都很棒,回答了你的问题,但这是谷歌对"bash get list of files in directory“的最高搜索结果(我正在寻找它来保存文件列表),所以我想我应该发布这个问题的答案:

代码语言:javascript
复制
ls $search_path > filename.txt

如果您只需要某种类型(例如,任何.txt文件):

代码语言:javascript
复制
ls $search_path | grep *.txt > filename.txt

请注意,$search_path是可选的;ls > filename.txt将执行当前目录。

票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2437452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档