【问题标题】:List paths with find when the filename contains spaces [duplicate]当文件名包含空格时使用查找列出路径[重复]
【发布时间】:2013-05-29 20:25:41
【问题描述】:

我有这个代码

for i in $(find pwd)
do
    echo $i
done

问题是如果文件名包含空格,它会打印在单独的行上

如何列出某个目录中的所有文件,包括包含空格的文件

【问题讨论】:

  • find pwd 有什么问题?

标签: linux bash shell


【解决方案1】:

这将具有您的示例的预期效果:

find /path/to/somewhere

也就是说,不需要在它周围包裹一个 for 循环。

但我猜你想要的不仅仅是回声。也许为每个文件调用一个脚本?你可以这样做:

find /path/to/somewhere -exec path/to/script.sh {} \;

{} 将被替换为找到的每个文件名。

【讨论】:

    【解决方案2】:

    解决办法

    IFS=$'\n'
        for i in $(pwd)
        do
            echo $i
        done
    

    【讨论】:

    • 为什么限制为$7?如果路径包含更多空格,它将失败,对吗?
    • awk 解决方案是一个非解决方案,因为您只处理目录名称,而不是目录下包含的文件的名称。虽然基于 IFS 的解决方案有效,但它仅适用于不包含换行的文件名(这种情况很少见,但合法)。
    【解决方案3】:

    我会为此使用while read

    find . | while read i; do echo $i; done;

    编辑:
    或者,你可以只做ls -a1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-20
      • 2012-12-16
      • 1970-01-01
      • 1970-01-01
      • 2013-04-07
      • 2020-08-03
      • 1970-01-01
      相关资源
      最近更新 更多