我试图获得一个目录的内容使用shell脚本。
我的剧本是:
for entry in `ls $search_dir`; do
echo $entry
done
其中$search_dir是一个相对路径。但是,$search_dir包含许多名称中带有空格的文件。在这种情况下,该脚本不能按预期运行。
我知道我可以在*中使用for条目,但这只适用于我的当前目录。
我知道我可以更改到该目录,使用*的入口,然后更改回来,但我的特殊情况阻止了我这样做。
我有两个相对路径$search_dir和$work_dir,我必须同时工作,读取它们,创建/删除它们中的文件等。
现在我该怎么办?
PS:我使用bash。
下面是列出目录内文件的另一种方法(使用不同的工具,不如其他一些答案有效)。
cd "search_dir"
for [ z in `echo *` ]; do
echo "$z"
done
echo *输出当前目录下的所有文件。for循环遍历每个文件名并输出到stdout。
此外,如果在目录中查找目录,则将其放在for循环中:
if [ test -d $z ]; then
echo "$z is a directory"
fi
Test -d检查文件是否为目录。
在这里的其他答案是伟大的,回答你的问题,但这是顶级谷歌结果“bash获得目录中的文件列表”,(这是我正在寻找保存文件列表),所以我想我会张贴一个答案的问题:
ls $search_path > filename.txt
如果你只想要一个特定的类型(例如任何。txt文件):
ls $search_path | grep *.txt > filename.txt
注意$search_path是可选的;Ls > filename.txt将执行当前目录。