【发布时间】:2013-05-29 20:25:41
【问题描述】:
我有这个代码
for i in $(find pwd)
do
echo $i
done
问题是如果文件名包含空格,它会打印在单独的行上
如何列出某个目录中的所有文件,包括包含空格的文件
【问题讨论】:
-
find pwd有什么问题?
我有这个代码
for i in $(find pwd)
do
echo $i
done
问题是如果文件名包含空格,它会打印在单独的行上
如何列出某个目录中的所有文件,包括包含空格的文件
【问题讨论】:
find pwd 有什么问题?
这将具有您的示例的预期效果:
find /path/to/somewhere
也就是说,不需要在它周围包裹一个 for 循环。
但我猜你想要的不仅仅是回声。也许为每个文件调用一个脚本?你可以这样做:
find /path/to/somewhere -exec path/to/script.sh {} \;
{} 将被替换为找到的每个文件名。
【讨论】:
解决办法
IFS=$'\n'
for i in $(pwd)
do
echo $i
done
【讨论】:
$7?如果路径包含更多空格,它将失败,对吗?
awk 解决方案是一个非解决方案,因为您只处理目录名称,而不是目录下包含的文件的名称。虽然基于 IFS 的解决方案有效,但它仅适用于不包含换行的文件名(这种情况很少见,但合法)。
我会为此使用while read。
find . | while read i; do echo $i; done;
编辑:
或者,你可以只做ls -a1
【讨论】: