相关疑难解决方法(0)

使用空格迭代文件列表

我想迭代一个文件列表.这个列表是find命令的结果,所以我想出了:

getlist() {
  for f in $(find . -iname "foo*")
  do
    echo "File found: $f"
    # do something useful
  done
}
Run Code Online (Sandbox Code Playgroud)

没关系,除非文件名中有空格:

$ ls
foo_bar_baz.txt
foo bar baz.txt

$ getlist
File found: foo_bar_baz.txt
File found: foo
File found: bar
File found: baz.txt
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能避免空格分裂?

linux bash shell

185
推荐指数
6
解决办法
9万
查看次数

在Bash中循环遍历目录

我有一个关于bash如何工作的基本问题,以及一个相关的实际问题.

基本问题:假设我在一个有三个子目录的目录中:a,b和c.

母鸡的代码

for dir in $(ls)
do 
    echo $dir
done
Run Code Online (Sandbox Code Playgroud)

吐出:

a b c
a b c
a b c
Run Code Online (Sandbox Code Playgroud)

即,dir始终存储我的所有文件/目录的列表cwd.我的问题是:为什么世界会这么方便?在我看来,dir一次存储每个元素更有用和直观,即我想要输出

a
b
c
Run Code Online (Sandbox Code Playgroud)

另外,根据其中一个答案 - 使用它是错误的for dir in $(ls),但是当我使用时,for dir in $(ls -l)我得到更多的副本a b c(比cwd中的目录/文件更多).这是为什么?

我的第二个问题是实用的:如何在我cwd用大写字母W开头的所有目录(不是文件!)上循环?我开始了

for dir in `ls -l W*`
Run Code Online (Sandbox Code Playgroud)

但这失败了因为a)问题1和b)中的原因,因为它不排除文件.建议表示赞赏.

bash

15
推荐指数
2
解决办法
4万
查看次数

标签 统计

bash ×2

linux ×1

shell ×1