我想获取当前目录及其子目录中的文件列表(我想使用单行脚本):
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"
?