x=$(find . -name "*.txt")
echo $x
Run Code Online (Sandbox Code Playgroud)
如果我在Bash shell中运行上面的代码,我得到的是一个包含多个文件名的字符串,用空格分隔,而不是列表.
当然,我可以进一步将它们分开来获取列表,但我确信有更好的方法可以做到这一点.
那么循环find执行命令结果的最佳方法是什么?
只是想要一个简单的shell脚本,有点困惑:
这是我的脚本:
% for f in $FILES; do echo "Processing $f file.."; done
Run Code Online (Sandbox Code Playgroud)
命令:
ls -la | grep bash
Run Code Online (Sandbox Code Playgroud)
生产:
% ls -a | grep bash
.bash_from_cshrc
.bash_history
.bash_profile
.bashrc
Run Code Online (Sandbox Code Playgroud)
什么时候
FILES=".bash*"
Run Code Online (Sandbox Code Playgroud)
我得到与ls -a相同的结果(不同的格式).但是什么时候
FILES="*bash*"
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
Processing *bash* file..
Run Code Online (Sandbox Code Playgroud)
这不是预期的产出,而不是我的预期.我不允许在文件名的开头加一张外卡吗?是个 .在文件名的开头"特别"莫名其妙?
设置
FILES="bash*"
Run Code Online (Sandbox Code Playgroud)
也行不通.