bash - 如何在bash中列出名称中带有空格的子目录
问题描述
我发现了一些与此类似的问题,但令人惊讶的是,它们都不适合我。
我在脚本中写了这个:
for d in $(ls -d "$1"); do
echo $d
done
$1 是我希望打印出子目录列表的父目录,但是,运行它会打印出例如名为“带空格的目录”的目录,在单独的行上以 3 个单词的形式出现。
解决方案
您可以使用 shell globbing 而不是进程替换,这不会受到单词扩展问题的影响:
# to include dotfiles and not iterate empty directory
shopt -s dotglob nullglob
for d in "$1"/*; do
echo "$d"
done
或者你可以诉诸非常常见的find ... -print0 | xargs -0 ...
模式。
推荐阅读
- user-interface - 在我的脚本仍在 AHK 上运行时运行 Gui
- javascript - 如何根据位置控制数组中的绘图对象?
- c++ - C++:没有调用析构函数
- python - 我的 reddit 机器人一遍又一遍地回复相同的评论和自己
- python - 登录用户有没有办法将数据库存储在他们自己的 django 帐户中?
- html - Thymeleaf 登录和注销可见性问题
- mysql - node js和mysql返回查询结果
- javascript - 如何避免从 Redux 商店缓慢获取状态?
- c - 如何打印字符串数组的内容?
- ionic-framework - Ionic Admob 奖励服务器验证