小编duq*_*uqu的帖子

变量 IFS 和不同的结果与循环列出文件

我想获取当前目录及其子目录中的文件列表(我想使用单行脚本):

IFS=$(echo -en "\n\b");
for FILE in $(find -type f); do echo "$FILE"; done
Run Code Online (Sandbox Code Playgroud)

通常,它按预期工作,但最近,使用我的文件列表:

file_.doc
file_0.doc
_文件[2006_02_25] .DOC
_文件[2016_06_16]的.odt
_文件[2016_06_16] .PDF
_文件[16-6-2006] .DOC
file_.pdf
_文件4-4-2006.doc

输出是:

./file_.doc                                                                                                                                                 
./file_0.doc                                                                                                                                                
./file_0.doc
./file_[2016_06_16].odt
./file_[2016_06_16].pdf
./file_0.doc
./file_.pdf
./file_ 4-4-2006.doc
Run Code Online (Sandbox Code Playgroud)

如果我将变量 IFS 更改为:

IFS=$(echo -en "\n");
Run Code Online (Sandbox Code Playgroud)

那么输出将是(更正):

./file_.doc
./file_0.doc
./file_[2006_02_25].doc
./file_[2016_06_16].odt
./file_[2016_06_16].pdf
./file_[16-6-2006].doc
./file_.pdf
./file_ 4-4-2006.doc
Run Code Online (Sandbox Code Playgroud)

我已阅读,'\b'neccesary,发现一个解决方案使用printf的替代,echo

我的问题是:

1) 你能解释一下是什么让这些输出不同吗?

2)使用printf上面的解决方案可以替代echo -en "\n\b"

bash find wildcards

5
推荐指数
1
解决办法
957
查看次数

标签 统计

bash ×1

find ×1

wildcards ×1