如何处理“find”中名称中有空格的目录?

Alm*_*lmo 5 bash find filenames whitespace

我有这个:

#!/bin/bash

for file in `find . -type d`
do
  echo $file
done
Run Code Online (Sandbox Code Playgroud)

如果我只有一个名为My Directory的目录,则输出为

My
Directory
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

echo $file只是暂时的。那里将有其他代码对目录进行操作。

小智 5

像下面这样的工作......

find . -type d | while read dir; do echo $dir; done
.
./my dir
Run Code Online (Sandbox Code Playgroud)

根据您在做什么,您可能会更好地使用find's-print0选项和xargs -0.

您获得的代码采用未加引号的输出,find并将其用作单词列表(在空格上拆分)以for进行迭代。