我正在尝试使用shell脚本获取目录的内容。
我的脚本是:
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。
发布于 2010-03-13 14:08:12
for entry in "$search_dir"/*
do
echo "$entry"
done发布于 2017-04-27 23:08:50
这是一种语法更容易理解的方法:
yourfilenames=`ls ./*.txt`
for eachfile in $yourfilenames
do
echo $eachfile
done./是当前工作目录,但可以替换为任何路径
*.txt返回anything.txt
您可以通过直接在终端中键入ls命令来轻松查看列出的内容。
基本上,您创建了一个变量yourfilenames,其中包含list命令作为单独元素返回的所有内容,然后遍历它。该循环创建一个临时变量eachfile,该变量包含循环通过的变量的单个元素,在本例中是一个文件名。这不一定比其他答案更好,但我觉得很直观,因为我已经熟悉了ls命令和for循环语法。
发布于 2014-10-24 00:13:52
这里的其他答案都很棒,回答了你的问题,但这是谷歌对"bash get list of files in directory“的最高搜索结果(我正在寻找它来保存文件列表),所以我想我应该发布这个问题的答案:
ls $search_path > filename.txt如果您只需要某种类型(例如,任何.txt文件):
ls $search_path | grep *.txt > filename.txt请注意,$search_path是可选的;ls > filename.txt将执行当前目录。
https://stackoverflow.com/questions/2437452
复制相似问题